From e3aee13417352848acb1daf70ceb0e7119940343 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 13 Aug 2025 01:36:48 +0000 Subject: [PATCH] Sync latest dev docs --- docs/api/qiskit-c/dev/_toc.json | 4 + docs/api/qiskit-c/dev/index.mdx | 5 +- docs/api/qiskit-c/dev/qk-circuit.mdx | 31 +- .../qiskit-c/dev/qk-classical-register.mdx | 14 +- docs/api/qiskit-c/dev/qk-complex-64.mdx | 10 +- .../dev/qk-elide-permutations-result.mdx | 102 +++ docs/api/qiskit-c/dev/qk-obs.mdx | 73 ++- docs/api/qiskit-c/dev/qk-quantum-register.mdx | 12 + docs/api/qiskit-c/dev/qk-target-entry.mdx | 48 +- docs/api/qiskit-c/dev/qk-target.mdx | 118 ++-- .../api/qiskit-c/dev/qk-transpiler-passes.mdx | 114 +++- .../qiskit-c/dev/qk-vf-2-layout-result.mdx | 18 +- .../dev/execution-span-double-slice-span.mdx | 12 +- .../dev/execution-span-execution-span.mdx | 12 +- .../dev/execution-span-slice-span.mdx | 12 +- .../dev/execution-span-twirled-slice-span.mdx | 16 +- .../dev/fake-provider-fake-algiers.mdx | 39 +- .../dev/fake-provider-fake-almaden-v2.mdx | 37 +- .../dev/fake-provider-fake-armonk-v2.mdx | 39 +- .../dev/fake-provider-fake-athens-v2.mdx | 39 +- .../dev/fake-provider-fake-auckland.mdx | 39 +- .../dev/fake-provider-fake-belem-v2.mdx | 39 +- .../dev/fake-provider-fake-boeblingen-v2.mdx | 39 +- .../dev/fake-provider-fake-bogota-v2.mdx | 39 +- .../dev/fake-provider-fake-brisbane.mdx | 39 +- .../dev/fake-provider-fake-brooklyn-v2.mdx | 39 +- .../dev/fake-provider-fake-burlington-v2.mdx | 37 +- .../dev/fake-provider-fake-cairo-v2.mdx | 39 +- .../dev/fake-provider-fake-cambridge-v2.mdx | 37 +- .../dev/fake-provider-fake-casablanca-v2.mdx | 39 +- .../dev/fake-provider-fake-cusco.mdx | 39 +- .../dev/fake-provider-fake-essex-v2.mdx | 37 +- .../dev/fake-provider-fake-fez.mdx | 39 +- .../fake-provider-fake-fractional-backend.mdx | 39 +- .../dev/fake-provider-fake-geneva.mdx | 39 +- .../dev/fake-provider-fake-guadalupe-v2.mdx | 39 +- .../dev/fake-provider-fake-hanoi-v2.mdx | 39 +- .../dev/fake-provider-fake-jakarta-v2.mdx | 39 +- .../fake-provider-fake-johannesburg-v2.mdx | 37 +- .../dev/fake-provider-fake-kawasaki.mdx | 39 +- .../dev/fake-provider-fake-kolkata-v2.mdx | 39 +- .../dev/fake-provider-fake-kyiv.mdx | 39 +- .../dev/fake-provider-fake-kyoto.mdx | 39 +- .../dev/fake-provider-fake-lagos-v2.mdx | 39 +- .../dev/fake-provider-fake-lima-v2.mdx | 39 +- .../dev/fake-provider-fake-london-v2.mdx | 37 +- .../dev/fake-provider-fake-manhattan-v2.mdx | 39 +- .../dev/fake-provider-fake-manila-v2.mdx | 39 +- .../dev/fake-provider-fake-marrakesh.mdx | 39 +- .../dev/fake-provider-fake-melbourne-v2.mdx | 37 +- .../dev/fake-provider-fake-montreal-v2.mdx | 39 +- .../dev/fake-provider-fake-mumbai-v2.mdx | 39 +- .../dev/fake-provider-fake-nairobi-v2.mdx | 39 +- .../dev/fake-provider-fake-osaka.mdx | 39 +- .../dev/fake-provider-fake-oslo.mdx | 39 +- .../dev/fake-provider-fake-ourense-v2.mdx | 37 +- .../dev/fake-provider-fake-paris-v2.mdx | 39 +- .../dev/fake-provider-fake-peekskill.mdx | 39 +- .../dev/fake-provider-fake-perth.mdx | 39 +- .../fake-provider-fake-poughkeepsie-v2.mdx | 39 +- .../dev/fake-provider-fake-prague.mdx | 37 +- .../dev/fake-provider-fake-quebec.mdx | 39 +- .../dev/fake-provider-fake-quito-v2.mdx | 39 +- .../dev/fake-provider-fake-rochester-v2.mdx | 37 +- .../dev/fake-provider-fake-rome-v2.mdx | 39 +- .../dev/fake-provider-fake-santiago-v2.mdx | 39 +- .../dev/fake-provider-fake-sherbrooke.mdx | 39 +- .../dev/fake-provider-fake-singapore-v2.mdx | 37 +- .../dev/fake-provider-fake-sydney-v2.mdx | 39 +- .../dev/fake-provider-fake-torino.mdx | 39 +- .../dev/fake-provider-fake-toronto-v2.mdx | 39 +- .../dev/fake-provider-fake-valencia-v2.mdx | 39 +- .../dev/fake-provider-fake-vigo-v2.mdx | 37 +- .../dev/fake-provider-fake-washington-v2.mdx | 39 +- .../dev/fake-provider-fake-yorktown-v2.mdx | 37 +- .../qiskit-ibm-runtime/dev/ibm-backend.mdx | 40 +- .../dev/qiskit-runtime-service.mdx | 28 +- .../dev/runtime-decoder.mdx | 4 +- .../dev/runtime-encoder.mdx | 4 +- .../dev/transpiler-passes-fold-rzz-angle.mdx | 4 +- docs/api/qiskit/dev/_toc.json | 28 + docs/api/qiskit/dev/circuit.mdx | 16 +- docs/api/qiskit/dev/qasm3.mdx | 10 +- .../dev/qiskit.circuit.AnnotatedOperation.mdx | 4 +- .../dev/qiskit.circuit.CommutationChecker.mdx | 24 +- .../qiskit/dev/qiskit.circuit.Parameter.mdx | 163 +++-- .../qiskit.circuit.ParameterExpression.mdx | 163 ++--- .../dev/qiskit.circuit.ParameterVector.mdx | 6 +- .../qiskit.circuit.ParameterVectorElement.mdx | 157 +++-- .../dev/qiskit.circuit.QuantumCircuit.mdx | 34 +- .../qiskit/dev/qiskit.circuit.library.AND.mdx | 464 ------------- ...t.circuit.library.CDKMRippleCarryAdder.mdx | 474 -------------- .../dev/qiskit.circuit.library.Diagonal.mdx | 464 ------------- .../qiskit.circuit.library.DraperQFTAdder.mdx | 474 -------------- .../qiskit.circuit.library.EfficientSU2.mdx | 584 ----------------- ....circuit.library.EvolvedOperatorAnsatz.mdx | 574 ---------------- ...qiskit.circuit.library.ExactReciprocal.mdx | 464 ------------- ...t.circuit.library.ExcitationPreserving.mdx | 584 ----------------- ...qiskit.circuit.library.FourierChecking.mdx | 464 ------------- ...rcuit.library.FunctionalPauliRotations.mdx | 452 ------------- .../qiskit/dev/qiskit.circuit.library.GMS.mdx | 464 ------------- .../qiskit/dev/qiskit.circuit.library.GR.mdx | 464 ------------- .../qiskit/dev/qiskit.circuit.library.GRX.mdx | 464 ------------- .../qiskit/dev/qiskit.circuit.library.GRY.mdx | 464 ------------- .../qiskit/dev/qiskit.circuit.library.GRZ.mdx | 464 ------------- ...qiskit.circuit.library.GlobalPhaseGate.mdx | 2 +- .../dev/qiskit.circuit.library.GraphState.mdx | 464 ------------- .../qiskit.circuit.library.GroverOperator.mdx | 464 ------------- ...ircuit.library.HRSCumulativeMultiplier.mdx | 484 -------------- ...t.circuit.library.HiddenLinearFunction.mdx | 464 ------------- .../qiskit/dev/qiskit.circuit.library.IQP.mdx | 464 ------------- .../qiskit.circuit.library.InnerProduct.mdx | 464 ------------- ...skit.circuit.library.IntegerComparator.mdx | 452 ------------- ...ircuit.library.LinearAmplitudeFunction.mdx | 464 ------------- ...t.circuit.library.LinearPauliRotations.mdx | 484 -------------- .../dev/qiskit.circuit.library.MCMT.mdx | 464 ------------- .../dev/qiskit.circuit.library.MCMTVChain.mdx | 464 ------------- .../qiskit.circuit.library.MCXGrayCode.mdx | 117 +--- .../qiskit.circuit.library.MCXRecursive.mdx | 117 +--- .../dev/qiskit.circuit.library.MCXVChain.mdx | 115 ---- .../dev/qiskit.circuit.library.NLocal.mdx | 446 ------------- .../qiskit/dev/qiskit.circuit.library.OR.mdx | 464 ------------- ...kit.circuit.library.PauliEvolutionGate.mdx | 4 +- ...qiskit.circuit.library.PauliFeatureMap.mdx | 568 ---------------- .../qiskit.circuit.library.PauliTwoDesign.mdx | 578 ----------------- .../qiskit.circuit.library.Permutation.mdx | 464 ------------- ...qiskit.circuit.library.PhaseEstimation.mdx | 464 ------------- .../qiskit.circuit.library.PhaseOracle.mdx | 464 ------------- ...kit.circuit.library.PiecewiseChebyshev.mdx | 452 ------------- ....library.PiecewiseLinearPauliRotations.mdx | 484 -------------- ...rary.PiecewisePolynomialPauliRotations.mdx | 484 -------------- ...rcuit.library.PolynomialPauliRotations.mdx | 484 -------------- .../dev/qiskit.circuit.library.QAOAAnsatz.mdx | 564 ---------------- .../qiskit/dev/qiskit.circuit.library.QFT.mdx | 446 ------------- .../qiskit.circuit.library.QuadraticForm.mdx | 464 ------------- .../qiskit.circuit.library.QuantumVolume.mdx | 464 ------------- ...qiskit.circuit.library.RGQFTMultiplier.mdx | 484 -------------- .../dev/qiskit.circuit.library.RGate.mdx | 4 +- .../qiskit.circuit.library.RealAmplitudes.mdx | 584 ----------------- .../dev/qiskit.circuit.library.TwoLocal.mdx | 594 ----------------- .../dev/qiskit.circuit.library.U2Gate.mdx | 4 +- .../qiskit.circuit.library.UnitaryOverlap.mdx | 464 ------------- ...it.circuit.library.VBERippleCarryAdder.mdx | 474 -------------- .../qiskit.circuit.library.WeightedAdder.mdx | 452 ------------- .../qiskit/dev/qiskit.circuit.library.XOR.mdx | 464 ------------- .../qiskit.circuit.library.ZFeatureMap.mdx | 614 ------------------ .../qiskit.circuit.library.ZZFeatureMap.mdx | 614 ------------------ .../qiskit.passmanager.BasePassManager.mdx | 6 +- ...nthesis.unitary.aqc.ApproximateCircuit.mdx | 464 ------------- ....synthesis.unitary.aqc.CNOTUnitCircuit.mdx | 464 ------------- ...ynthesis.unitary.aqc.CNOTUnitObjective.mdx | 6 - ...s.unitary.aqc.DefaultCNOTUnitObjective.mdx | 20 - ...esis.unitary.aqc.FastCNOTUnitObjective.mdx | 20 - .../dev/qiskit.transpiler.PassManager.mdx | 16 +- .../qiskit.transpiler.StagedPassManager.mdx | 18 +- ...ranspiler.generate_preset_pass_manager.mdx | 2 +- ...transpiler.passes.ALAPScheduleAnalysis.mdx | 4 +- .../dev/qiskit.transpiler.passes.Error.mdx | 102 +++ ...spiler.passes.InstructionDurationCheck.mdx | 4 +- ....transpiler.passes.InverseCancellation.mdx | 33 +- ...transpiler.passes.LayoutTransformation.mdx | 119 ++++ ...it.transpiler.passes.OptimizeCliffordT.mdx | 105 +++ ...piler.passes.OptimizeSwapBeforeMeasure.mdx | 105 +++ .../dev/qiskit.transpiler.passes.PadDelay.mdx | 4 +- ...anspiler.passes.PadDynamicalDecoupling.mdx | 4 +- ...t.transpiler.passes.ResourceEstimation.mdx | 93 +++ ...is.hls_plugins.ACGSynthesisPermutation.mdx | 4 +- ...thesis.hls_plugins.AGSynthesisClifford.mdx | 4 +- ...thesis.hls_plugins.BMSynthesisClifford.mdx | 4 +- ....hls_plugins.BasicSynthesisPermutation.mdx | 4 +- ...s.hls_plugins.DefaultSynthesisClifford.mdx | 4 +- ...plugins.DefaultSynthesisLinearFunction.mdx | 4 +- ...esis.hls_plugins.FullAdderSynthesisC04.mdx | 4 +- ....hls_plugins.FullAdderSynthesisDefault.mdx | 4 +- ...esis.hls_plugins.FullAdderSynthesisV95.mdx | 4 +- ...is.hls_plugins.GreedySynthesisClifford.mdx | 4 +- ...esis.hls_plugins.HalfAdderSynthesisC04.mdx | 4 +- ...esis.hls_plugins.HalfAdderSynthesisD00.mdx | 4 +- ....hls_plugins.HalfAdderSynthesisDefault.mdx | 4 +- ...esis.hls_plugins.HalfAdderSynthesisR25.mdx | 4 +- ...esis.hls_plugins.HalfAdderSynthesisV95.mdx | 4 +- ...s.hls_plugins.IntComparatorSynthesis2s.mdx | 4 +- ..._plugins.IntComparatorSynthesisDefault.mdx | 4 +- ...ls_plugins.IntComparatorSynthesisNoAux.mdx | 4 +- ...hls_plugins.KMSSynthesisLinearFunction.mdx | 4 +- ...is.hls_plugins.KMSSynthesisPermutation.mdx | 4 +- ....hls_plugins.LayerLnnSynthesisClifford.mdx | 4 +- ...sis.hls_plugins.LayerSynthesisClifford.mdx | 4 +- ...hesis.hls_plugins.MCMTSynthesisDefault.mdx | 4 +- ...nthesis.hls_plugins.MCMTSynthesisNoAux.mdx | 4 +- ...thesis.hls_plugins.MCMTSynthesisVChain.mdx | 4 +- ...nthesis.hls_plugins.MCMTSynthesisXGate.mdx | 42 ++ ...esis.hls_plugins.MCXSynthesis1CleanB95.mdx | 4 +- ...sis.hls_plugins.MCXSynthesis1CleanKG24.mdx | 6 +- ...sis.hls_plugins.MCXSynthesis1DirtyKG24.mdx | 6 +- ...sis.hls_plugins.MCXSynthesis2CleanKG24.mdx | 6 +- ...sis.hls_plugins.MCXSynthesis2DirtyKG24.mdx | 6 +- ...thesis.hls_plugins.MCXSynthesisDefault.mdx | 4 +- ...hesis.hls_plugins.MCXSynthesisGrayCode.mdx | 4 +- ...esis.hls_plugins.MCXSynthesisNCleanM15.mdx | 4 +- ...esis.hls_plugins.MCXSynthesisNDirtyI15.mdx | 4 +- ...esis.hls_plugins.MCXSynthesisNoAuxHP24.mdx | 34 + ...hesis.hls_plugins.MCXSynthesisNoAuxV24.mdx | 6 +- ...s.hls_plugins.ModularAdderSynthesisC04.mdx | 4 +- ...s.hls_plugins.ModularAdderSynthesisD00.mdx | 4 +- ...s_plugins.ModularAdderSynthesisDefault.mdx | 4 +- ...s.hls_plugins.ModularAdderSynthesisV95.mdx | 4 +- ...sis.hls_plugins.MultiplierSynthesisH18.mdx | 4 +- ...sis.hls_plugins.MultiplierSynthesisR17.mdx | 4 +- ...hls_plugins.PMHSynthesisLinearFunction.mdx | 4 +- ...plugins.PauliEvolutionSynthesisDefault.mdx | 4 +- ..._plugins.PauliEvolutionSynthesisRustiq.mdx | 4 +- ...synthesis.hls_plugins.QFTSynthesisFull.mdx | 4 +- ...synthesis.hls_plugins.QFTSynthesisLine.mdx | 4 +- ...ugins.TokenSwapperSynthesisPermutation.mdx | 4 +- ...ls_plugins.WeightedSumSynthesisDefault.mdx | 4 +- ...t.visualization.plot_bloch_multivector.mdx | 2 +- ...qiskit.visualization.plot_bloch_vector.mdx | 4 +- ...qiskit.visualization.plot_distribution.mdx | 2 +- .../qiskit.visualization.plot_histogram.mdx | 2 +- .../qiskit.visualization.plot_state_city.mdx | 6 +- ...qiskit.visualization.plot_state_hinton.mdx | 6 +- ...skit.visualization.plot_state_paulivec.mdx | 4 +- ...iskit.visualization.plot_state_qsphere.mdx | 4 +- docs/api/qiskit/dev/synthesis.mdx | 146 ++++- docs/api/qiskit/dev/transpiler.mdx | 87 ++- docs/api/qiskit/dev/transpiler_passes.mdx | 73 ++- .../dev/transpiler_synthesis_plugins.mdx | 24 +- public/docs/api/qiskit-c/dev/objects.inv | Bin 2937 -> 3110 bytes .../api/qiskit-ibm-runtime/dev/objects.inv | Bin 54477 -> 52350 bytes public/docs/api/qiskit/dev/objects.inv | Bin 75655 -> 62809 bytes .../dev/fake_provider-3.avif | Bin 5413 -> 5336 bytes .../dev/twirling_strategy_options.avif | Bin 30650 -> 30650 bytes .../api/qiskit/dev/circuit_library-6_01.avif | Bin 81450 -> 81212 bytes .../api/qiskit/dev/circuit_random-1.avif | Bin 8260 -> 7764 bytes .../api/qiskit/dev/circuit_random-3.avif | Bin 5989 -> 5056 bytes .../dev/providers_fake_provider-1_01.avif | Bin 17490 -> 17566 bytes .../dev/providers_fake_provider-1_02.avif | Bin 4830 -> 4867 bytes .../dev/qiskit-circuit-ControlledGate-1.avif | Bin 1972 -> 1972 bytes .../dev/qiskit-circuit-ControlledGate-2.avif | Bin 7056 -> 7376 bytes .../dev/qiskit-circuit-Parameter-1_00.avif | Bin 1170 -> 1170 bytes .../qiskit-circuit-QuantumCircuit-15_00.avif | Bin 2008 -> 2008 bytes .../qiskit-circuit-QuantumCircuit-15_01.avif | Bin 2004 -> 2004 bytes .../qiskit-circuit-QuantumCircuit-16_00.avif | Bin 1930 -> 1930 bytes .../qiskit-circuit-QuantumCircuit-16_01.avif | Bin 2086 -> 2086 bytes .../dev/qiskit-circuit-QuantumCircuit-31.avif | Bin 1797 -> 1797 bytes .../dev/qiskit-circuit-library-AndGate-1.avif | Bin 25066 -> 25046 bytes .../dev/qiskit-circuit-library-AndGate-2.avif | Bin 20087 -> 20301 bytes ...skit-circuit-library-BitwiseXorGate-1.avif | Bin 23378 -> 23553 bytes ...qiskit-circuit-library-InnerProduct-1.avif | Bin 22600 -> 21957 bytes ...it-circuit-library-InnerProductGate-1.avif | Bin 20014 -> 20003 bytes .../dev/qiskit-circuit-library-OrGate-1.avif | Bin 24912 -> 24848 bytes .../dev/qiskit-circuit-library-OrGate-2.avif | Bin 21940 -> 21867 bytes ...kit-circuit-library-PermutationGate-2.avif | Bin 20975 -> 20982 bytes ...kit-circuit-library-PhaseEstimation-1.avif | Bin 14823 -> 14700 bytes ...it-circuit-library-phase_estimation-1.avif | Bin 17941 -> 17909 bytes .../qiskit-circuit-library-random_iqp-1.avif | Bin 7150 -> 9265 bytes ...kit-circuit-library-unitary_overlap-1.avif | Bin 13354 -> 13572 bytes .../qiskit-quantum_info-Statevector-1.avif | Bin 3694 -> 3694 bytes ...kit-transpiler-passes-FilterOpNodes-1.avif | Bin 971 -> 971 bytes ...it-transpiler-passes-RemoveBarriers-1.avif | Bin 1050 -> 1050 bytes ...qiskit-visualization-circuit_drawer-1.avif | Bin 1797 -> 1797 bytes ...t-visualization-plot_circuit_layout-1.avif | Bin 10434 -> 10213 bytes ...qiskit-visualization-plot_error_map-1.avif | Bin 49057 -> 49478 bytes ...kit-visualization-plot_histogram-1_01.avif | Bin 5492 -> 5492 bytes ...kit-visualization-plot_histogram-1_02.avif | Bin 5497 -> 5497 bytes ...kit-visualization-plot_state_hinton-1.avif | Bin 5510 -> 5510 bytes ...t-visualization-plot_state_paulivec-1.avif | Bin 7542 -> 7542 bytes ...iskit-visualization-timeline_drawer-1.avif | Bin 16342 -> 16195 bytes ...iskit-visualization-timeline_drawer-2.avif | Bin 11025 -> 11154 bytes ...iskit-visualization-timeline_drawer-3.avif | Bin 26530 -> 26048 bytes .../images/api/qiskit/dev/transpiler-10.avif | Bin 19227 -> 19256 bytes .../images/api/qiskit/dev/transpiler-9.avif | Bin 25328 -> 24604 bytes .../api/qiskit/dev/visualization-1.avif | Bin 3944 -> 3944 bytes .../api/qiskit/dev/visualization-3.avif | Bin 3735 -> 3735 bytes scripts/config/api-html-artifacts.json | 4 +- .../config/historical-pages-to-latest.json | 10 +- 277 files changed, 2323 insertions(+), 28326 deletions(-) create mode 100644 docs/api/qiskit-c/dev/qk-elide-permutations-result.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.Error.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.LayoutTransformation.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffordT.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeSwapBeforeMeasure.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.ResourceEstimation.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24.mdx diff --git a/docs/api/qiskit-c/dev/_toc.json b/docs/api/qiskit-c/dev/_toc.json index 60616db84ce..c27c9338bbb 100644 --- a/docs/api/qiskit-c/dev/_toc.json +++ b/docs/api/qiskit-c/dev/_toc.json @@ -21,6 +21,10 @@ "title": "QkComplex64", "url": "/docs/api/qiskit-c/dev/qk-complex-64" }, + { + "title": "QkElidePermutationsResult", + "url": "/docs/api/qiskit-c/dev/qk-elide-permutations-result" + }, { "title": "QkExitCode", "url": "/docs/api/qiskit-c/dev/qk-exit-code" diff --git a/docs/api/qiskit-c/dev/index.mdx b/docs/api/qiskit-c/dev/index.mdx index 36a50cf31b4..93c921914f1 100644 --- a/docs/api/qiskit-c/dev/index.mdx +++ b/docs/api/qiskit-c/dev/index.mdx @@ -34,8 +34,9 @@ As this interface is still new in Qiskit it should be considered experimental an Using the transpiler from the C API is intended to only cover circuits created solely via the C API. If you are in a hybrid mode where you’re using the C API with Python you should invoke the transpiler via the Python [`qiskit.transpiler`](/docs/api/qiskit/dev/transpiler#module-qiskit.transpiler "qiskit.transpiler") module instead; the functionality is the same Rust internals they just offer different entrypoints. The C API for transpilation makes assumptions about the input only using constructs exposed to the C Quantum Circuit API and you will potentially get incomplete results transpiling circuits from Python via the C API. -* [Transpiler Passes](qk-transpiler-passes) -* [QkVF2LayoutResult](qk-vf-2-layout-result) * [QkTarget](qk-target) * [QkTargetEntry](qk-target-entry) +* [Transpiler Passes](qk-transpiler-passes) +* [QkVF2LayoutResult](qk-vf-2-layout-result) +* [QkElidePermutationsResult](qk-elide-permutations-result) diff --git a/docs/api/qiskit-c/dev/qk-circuit.mdx b/docs/api/qiskit-c/dev/qk-circuit.mdx index fac4a268ce3..e6b5b97eb22 100644 --- a/docs/api/qiskit-c/dev/qk-circuit.mdx +++ b/docs/api/qiskit-c/dev/qk-circuit.mdx @@ -26,11 +26,11 @@ $$ // Create a circuit with three qubits and 3 classical bits QkCircuit *qc = qk_circuit_new(3, 0); // H gate on qubit 0, putting this qubit in a superposition of |0> + |1>. -qk_circuit_gate(qc, QkGate_H, {0}, NULL); +qk_circuit_gate(qc, QkGate_H, (uint32_t[]){0}, NULL); // A CX (CNOT) gate on control qubit 0 and target qubit 1 generating a Bell state. -qk_circuit_gate(qc, QkGate_CX, {0, 1}, NULL); +qk_circuit_gate(qc, QkGate_CX, (uint32_t[]){0, 1}, NULL); // A CX (CNOT) gate on control qubit 0 and target qubit 2 generating a GHZ state. -qk_circuit_gate(qc, QkGate_CX, {0, 2}, NULL); +qk_circuit_gate(qc, QkGate_CX, (uint32_t[]){0, 2}, NULL); // Free the created circuit. qk_circuit_free(qc); ``` @@ -202,7 +202,7 @@ The circuit C API currently only supports creating circuits that contain operati QkQuantumRegister *qr = qk_quantum_register_new(1024, "my_little_register"); qk_circuit_add_quantum_register(qc, qr); qk_quantum_register_free(qr); - qk_circuit_free(qc) + qk_circuit_free(qc); ``` @@ -233,7 +233,7 @@ The circuit C API currently only supports creating circuits that contain operati QkClassicalRegister *cr = qk_classical_register_new(24, "my_big_register"); qk_circuit_add_classical_register(qc, cr); qk_classical_register_free(cr); - qk_circuit_free(qc) + qk_circuit_free(qc); ``` @@ -391,7 +391,7 @@ The circuit C API currently only supports creating circuits that contain operati - The `qubits` and `params` types are expected to be a pointer to an array of `uint32_t` and `double` respectively where the length is matching the expectations for the standard gate. If the array is insufficently long the behavior of this function is undefined as this will read outside the bounds of the array. It can be a null pointer if there are no qubits or params for a given gate. You can check `qk_gate_num_qubits` and `qk_gate_num_params` to determine how many qubits and params are required for a given gate. + The `qubits` and `params` types are expected to be a pointer to an array of `uint32_t` and `double` respectively where the length is matching the expectations for the standard gate. If the array is insufficiently long the behavior of this function is undefined as this will read outside the bounds of the array. It can be a null pointer if there are no qubits or params for a given gate. You can check `qk_gate_num_qubits` and `qk_gate_num_params` to determine how many qubits and params are required for a given gate. Behavior is undefined if `circuit` is not a valid, non-null pointer to a `QkCircuit`. @@ -562,17 +562,16 @@ The circuit C API currently only supports creating circuits that contain operati #### Example ```c - QkComplex64 c0 = qk_complex64_from_native(0); // 0+0i - QkComplex64 c1 = qk_complex64_from_native(1); // 1+0i + QkComplex64 c0 = {0, 0}; // 0+0i + QkComplex64 c1 = {1, 0}; // 1+0i const uint32_t num_qubits = 1; - const uint32_t dim = 2; - QkComplex64[dim * dim] unitary = {c0, c1, // row 0 + QkComplex64 unitary[2*2] = {c0, c1, // row 0 c1, c0}; // row 1 QkCircuit *circuit = qk_circuit_new(1, 0); // 1 qubit circuit - uint32_t qubit = {0}; // qubit to apply the unitary on - qk_circuit_unitary(circuit, unitary, qubit, num_qubits); + uint32_t qubit[1] = {0}; // qubit to apply the unitary on + qk_circuit_unitary(circuit, unitary, qubit, num_qubits, true); ``` @@ -607,7 +606,7 @@ The circuit C API currently only supports creating circuits that contain operati ```c QkCircuit *qc = qk_circuit_new(100, 0); - uint32_t qubit[1] = {0}; + uint32_t qubits[1] = {0}; qk_circuit_gate(qc, QkGate_H, qubits, NULL); QkOpCounts counts = qk_circuit_count_ops(qc); ``` @@ -675,7 +674,7 @@ The circuit C API currently only supports creating circuits that contain operati ```c QkCircuitInstruction inst; - QkCircuit *qc = qk_circuit_new(100); + QkCircuit *qc = qk_circuit_new(100, 0); uint32_t qubit[1] = {0}; qk_circuit_gate(qc, QkGate_H, qubit, NULL); qk_circuit_get_instruction(qc, 0, &inst); @@ -709,8 +708,8 @@ The circuit C API currently only supports creating circuits that contain operati ```c QkCircuitInstruction *inst = malloc(sizeof(QkCircuitInstruction)); - QkCircuit *qc = qk_circuit_new(100); - uint32_t q0 = {0}; + QkCircuit *qc = qk_circuit_new(100, 0); + uint32_t q0[1] = {0}; qk_circuit_gate(qc, QkGate_H, q0, NULL); qk_circuit_get_instruction(qc, 0, inst); qk_circuit_instruction_clear(inst); // free the data diff --git a/docs/api/qiskit-c/dev/qk-classical-register.mdx b/docs/api/qiskit-c/dev/qk-classical-register.mdx index e2b8e525ab7..f9d2b96e74e 100644 --- a/docs/api/qiskit-c/dev/qk-classical-register.mdx +++ b/docs/api/qiskit-c/dev/qk-classical-register.mdx @@ -12,14 +12,26 @@ python_api_name: QkClassicalRegister typedef struct QkClassicalRegister QkClassicalRegister ``` -A common way to instantiate several bits at once is to create a register. A register is a named collection of bits. Creating a register enables giving a collection of bits a name which can be use as metadata around specific bits in a circuit. This name will also typically be preseserved when exporting the circuit to interchange languages. +A common way to instantiate several bits at once is to create a register. A register is a named collection of bits. Creating a register enables giving a collection of bits a name which can be use as metadata around specific bits in a circuit. This name will also typically be preserved when exporting the circuit to interchange languages. You can create a register by calling `qk_classical_register_new()`, for example: +```c +#include + +QkClassicalRegister *creg = qk_classical_register_new(5, "my_creg"); +``` + Which creates a new 5 classical bit register named `"my_creg"`. Then to add the register to a circuit you use the `qk_circuit_add_classical_register()` function: +```c +QkCircuit *qc = qk_circuit_new(0, 0); +qk_circuit_add_classical_register(qc, creg); +uint32_t num_qubits = qk_circuit_num_qubits(qc); // 5 +``` + While circuits track registers, the registers themselves impart almost no behavioral differences on circuits. ## Functions diff --git a/docs/api/qiskit-c/dev/qk-complex-64.mdx b/docs/api/qiskit-c/dev/qk-complex-64.mdx index 5c21017b5e1..43b2554fbc5 100644 --- a/docs/api/qiskit-c/dev/qk-complex-64.mdx +++ b/docs/api/qiskit-c/dev/qk-complex-64.mdx @@ -8,7 +8,7 @@ python_api_name: QkComplex64 # QkComplex64 -A complex, double-precision number representation. This data type is used to safely use complex numbers within Qiskit, but is not necessarily designed for easy manipulation on user-side. Instead, we provide functions to convert from compiler-native representation (e.g. `double complex` for GNU or Clang compilers), which allow for ergonomic handling, to Qiskit’s `QkComplex64` representation, which is meant for passing into Qiskit functions and structs. +A complex, double-precision number representation. This data type is used to safely use complex numbers within Qiskit, but is not necessarily designed for easy manipulation on user-side. Instead, we provide functions to convert from compiler-native representation (e.g. `complex double` for GNU or Clang compilers), which allow for ergonomic handling, to Qiskit’s `QkComplex64` representation, which is meant for passing into Qiskit functions and structs. Explicitly, Qiskit assumes the compiler-native complex number type in C to be `_Dcomplex` for Windows MSVC (if `_MSC_VER` is defined) and `double _Complex` otherwise. In C++ (if `__cplusplus` is defined), the complex number type is always `std::complex`. @@ -38,11 +38,11 @@ Convert a `QkComplex64` to a compiler-native complex number representation. Note ### Example -Assuming a GNU/clang compiler with `double complex` as native complex number, we have +Assuming a GNU/clang compiler with `complex double` as native complex number, we have ```c QkComplex64 qk_value = {1, 1}; // represents 1 + i -double complex value = qk_complex64_to_native(&qk_value); +complex double value = qk_complex64_to_native(&qk_value); ``` ### Safety @@ -65,10 +65,10 @@ Convert a compiler-native complex number to a `QkComplex64`. Note that `CMPLX_DO ### Example -Assuming a GNU/clang compiler with `double complex` as native complex number, we have +Assuming a GNU/clang compiler with `complex double` as native complex number, we have ```c -double complex value = 1 + I; +complex double value = 1 + I; QkComplex64 qk_value = qk_complex64_from_native(&value); ``` diff --git a/docs/api/qiskit-c/dev/qk-elide-permutations-result.mdx b/docs/api/qiskit-c/dev/qk-elide-permutations-result.mdx new file mode 100644 index 00000000000..76889e89fea --- /dev/null +++ b/docs/api/qiskit-c/dev/qk-elide-permutations-result.mdx @@ -0,0 +1,102 @@ +--- +title: QkElidePermutationsResult (dev version) +description: API reference for QkElidePermutationsResult in the dev version of qiskit-c +in_page_toc_min_heading_level: 2 +python_api_type: module +python_api_name: QkElidePermutationsResult +--- + +# QkElidePermutationsResult + +```c +typedef struct QkElidePermutationsResult QkElidePermutationsResult +``` + +When running the `qk_transpiler_pass_standalone_elide_permutations` function it returns a modified circuit and a permutation array as a QkElidePermutationsResult object. This object contains the outcome of the transpiler pass, whether the pass was able to elide any gates or not, and what the results of that elision were. + +## Functions + +### qk\_elide\_permutations\_result\_elided\_gates + + + Check whether the elide permutations was able to elide anything + + + + #### Safety + + + + Behavior is undefined if `result` is not a valid, non-null pointer to a `QkElidePermutationsResult`. + + **Parameters** + + **result** – a pointer to the result + + **Returns** + + `true` if the `qk_transpiler_pass_standalone_elide_permutations()` run elided any gates + + +### qk\_elide\_permutations\_result\_circuit + + + Get the circuit from the elide permutations result + + + + #### Safety + + + + Behavior is undefined if `result` is not a valid, non-null pointer to a `QkElidePermutationsResult`. The pointer to the returned circuit is owned by the result object, it should not be passed to `qk_circuit_free()` as it will be freed by `qk_elide_permutations_result_free()`. + + **Parameters** + + **result** – a pointer to the result of the pass. It must have elided gates as checked by `qk_elide_permutations_result_elided_gates()` + + **Returns** + + A pointer to the circuit with the permutation gates elided + + +### qk\_elide\_permutations\_result\_permutation + + + Get the permutation array for the elided gates + + + + #### Safety + + + + Behavior is undefined if `layout` is not a valid, non-null pointer to a `QkElidePermutationsResult`. Also qubit must be a valid qubit for the circuit and there must be a result found. The pointer to the permutation array is owned by the result object, it should not be passed to `free()` as it will be freed by `qk_elide_permutations_result_free()` when that is called. + + **Parameters** + + **result** – a pointer to the result of the pass. It must have elided gates as checked by `qk_elide_permutations_result_elided_gates()` + + **Returns** + + A pointer to the permutation array caused by the swap elision performed by the pass. This array has a length equal to the number of qubits of the circuit returned by `qk_elide_permutations_result_elided_gates()` (or the circuit passed into `qk_transpiler_pass_standalone_elide_permutations()`). The permutation array maps the virtual qubit in the original circuit at each index to its new output position after all the elision performed by the pass. For example, and array of `[2, 1, 0]` means that qubit 0 is now in qubit 2 on the output of the circuit and qubit 2’s is now at 0 (qubit 1 remains unchanged) + + +### qk\_elide\_permutations\_result\_free + + + Free a `QkElidePermutationsResult` object + + + + #### Safety + + + + Behavior is undefined if `layout` is not a valid, non-null pointer to a `QkElidePermutationsResult`. + + **Parameters** + + **result** – a pointer to the result object to free + + diff --git a/docs/api/qiskit-c/dev/qk-obs.mdx b/docs/api/qiskit-c/dev/qk-obs.mdx index a4d5f3ad998..c3d2c752df6 100644 --- a/docs/api/qiskit-c/dev/qk-obs.mdx +++ b/docs/api/qiskit-c/dev/qk-obs.mdx @@ -72,26 +72,26 @@ These cases are not special, they’re fully consistent with the rules and shoul For any given mathematical observable, there are several ways of representing it with `QkObs`. For example, the same set of single-bit terms and their corresponding indices might appear multiple times in the observable. Mathematically, this is equivalent to having only a single term with all the coefficients summed. Similarly, the terms of the sum in a `QkObs` can be in any order while representing the same observable, since addition is commutative (although while floating-point addition is not associative, `QkObs` makes no guarantees about the summation order). -These two categories of representation degeneracy can cause the operator equality, `qk_obs_equal`, to claim that two observables are not equal, despite representating the same object. In these cases, it can be convenient to define some *canonical form*, which allows observables to be compared structurally. You can put a `QkObs` in canonical form by using the `qk_obs_canonicalize` function. The precise ordering of terms in canonical ordering is not specified, and may change between versions of Qiskit. Within the same version of Qiskit, however, you can compare two observables structurally by comparing their simplified forms. +These two categories of representation degeneracy can cause the operator equality, `qk_obs_equal`, to claim that two observables are not equal, despite representing the same object. In these cases, it can be convenient to define some *canonical form*, which allows observables to be compared structurally. You can put a `QkObs` in canonical form by using the `qk_obs_canonicalize` function. The precise ordering of terms in canonical ordering is not specified, and may change between versions of Qiskit. Within the same version of Qiskit, however, you can compare two observables structurally by comparing their simplified forms. If you wish to account for floating-point tolerance in the comparison, it is safest to use a recipe such as: ```c bool equivalent(QkObs *left, QkObs *right, double tol) { - // compare a canonicalized version of left - right to the zero observable - QkObs *neg_right = qk_obs_mul(right, -1); - QkObs *diff = qk_obs_add(left, neg_right); - QkObs *canonical = qk_obs_canonicalize(diff, tol); - - QkObs *zero = qk_obs_zero(qk_obs_num_qubits(left)); - bool equiv = qk_obs_equal(diff, zero); - // free all temporary variables - qk_obs_free(neg_right); - qk_obs_free(diff); - qk_obs_free(canonical); - qk_obs_free(zero); - return equiv; + // compare a canonicalized version of left - right to the zero observable + QkObs *neg_right = qk_obs_multiply(right, &(QkComplex64){-1, 0}); + QkObs *diff = qk_obs_add(left, neg_right); + QkObs *canonical = qk_obs_canonicalize(diff, tol); + + QkObs *zero = qk_obs_zero(qk_obs_num_qubits(left)); + bool equiv = qk_obs_equal(diff, zero); + // free all temporary variables + qk_obs_free(neg_right); + qk_obs_free(diff); + qk_obs_free(canonical); + qk_obs_free(zero); + return equiv; } ``` @@ -197,14 +197,13 @@ for (size_t i = 0; i < num_terms; i++) { uint32_t num_qubits = 100; uint64_t num_terms = 2; // we have 2 terms: |01><01|, -1 * |+-><+-| uint64_t num_bits = 4; // we have 4 non-identity bits: 0, 1, +, - - - complex double coeffs[2] = {1, -1}; + QkComplex64 coeffs = {1, -1}; QkBitTerm bits[4] = {QkBitTerm_Zero, QkBitTerm_One, QkBitTerm_Plus, QkBitTerm_Minus}; + uint32_t indices[4] = {0, 1, 98, 99}; // <-- e.g. {1, 0, 99, 98} would be invalid size_t boundaries[3] = {0, 2, 4}; - QkObs *obs = qk_obs_new( - num_qubits, num_terms, num_bits, coeffs, bits, indices, boundaries + num_qubits, num_terms, num_bits, &coeffs, bits, indices, boundaries ); ``` @@ -216,7 +215,7 @@ for (size_t i = 0; i < num_terms; i++) { Behavior is undefined if any of the following conditions are violated: - * `coeffs` is a pointer to a `complex double` array of length `num_terms` + * `coeffs` is a pointer to a `QkComplex64` array of length `num_terms` * `bit_terms` is a pointer to an array of valid `QkBitTerm` elements of length `num_bits` * `indices` is a pointer to a `uint32_t` array of length `num_bits`, which is term-wise sorted in strict ascending order, and every element is smaller than `num_qubits` * `boundaries` is a pointer to a `size_t` array of length `num_terms + 1`, which is sorted in ascending order, the first element is 0 and the last element is smaller than `num_terms` @@ -276,10 +275,10 @@ for (size_t i = 0; i < num_terms; i++) { uint32_t num_qubits = 100; QkObs *obs = qk_obs_zero(num_qubits); - complex double coeff = 1; + QkComplex64 coeff = {1, 0}; QkBitTerm bit_terms[3] = {QkBitTerm_X, QkBitTerm_Y, QkBitTerm_Z}; uint32_t indices[3] = {0, 1, 2}; - QkObsTerm term = {&coeff, 3, bit_terms, indices, num_qubits}; + QkObsTerm term = {coeff, 3, bit_terms, indices, num_qubits}; int exit_code = qk_obs_add_term(obs, &term); ``` @@ -444,7 +443,7 @@ for (size_t i = 0; i < num_terms; i++) { Get a pointer to the coefficients. - This can be used to read and modify the observable’s coefficients. The resulting pointer is valid to read for `qk_obs_num_terms(obs)` elements of `complex double`. + This can be used to read and modify the observable’s coefficients. The resulting pointer is valid to read for `qk_obs_num_terms(obs)` elements of `QkComplex64`. @@ -453,10 +452,10 @@ for (size_t i = 0; i < num_terms; i++) { ```c QkObs *obs = qk_obs_identity(100); size_t num_terms = qk_obs_num_terms(obs); - complex double *coeffs = qk_obs_coeffs(obs); + QkComplex64 *coeffs = qk_obs_coeffs(obs); for (size_t i = 0; i < num_terms; i++) { - printf("%f + i%f\n", creal(coeffs[i]), cimag(coeffs[i])); + printf("%f + i%f\n", coeffs[i].re, coeffs[i].im); } ``` @@ -488,14 +487,16 @@ for (size_t i = 0; i < num_terms; i++) { #### Example + + ```c uint32_t num_qubits = 100; QkObs *obs = qk_obs_zero(num_qubits); - complex double coeff = 1; + QkComplex64 coeff = {1, 0}; QkBitTerm bit_terms[3] = {QkBitTerm_X, QkBitTerm_Y, QkBitTerm_Z}; - uint32_t indices[3] = {0, 1, 2}; - QkObsTerm term = {&coeff, 3, bit_terms, indices, num_qubits}; + uint32_t term_indices[3] = {0, 1, 2}; + QkObsTerm term = {coeff, 3, bit_terms, term_indices, num_qubits}; qk_obs_add_term(obs, &term); size_t len = qk_obs_len(obs); @@ -504,7 +505,9 @@ for (size_t i = 0; i < num_terms; i++) { for (size_t i = 0; i < len; i++) { printf("index %i: %i\n", i, indices[i]); } + ``` + ```c qk_obs_free(obs); ``` @@ -540,14 +543,14 @@ for (size_t i = 0; i < num_terms; i++) { uint32_t num_qubits = 100; QkObs *obs = qk_obs_zero(num_qubits); - complex double coeff = 1; + QkComplex64 coeff = {1, 0}; QkBitTerm bit_terms[3] = {QkBitTerm_X, QkBitTerm_Y, QkBitTerm_Z}; uint32_t indices[3] = {0, 1, 2}; - QkObsTerm term = {&coeff, 3, bit_terms, indices, num_qubits}; + QkObsTerm term = {coeff, 3, bit_terms, indices, num_qubits}; qk_obs_add_term(obs, &term); size_t num_terms = qk_obs_num_terms(obs); - uint32_t *boundaries = qk_obs_boundaries(obs); + uintptr_t *boundaries = qk_obs_boundaries(obs); for (size_t i = 0; i < num_terms + 1; i++) { printf("boundary %i: %i\n", i, boundaries[i]); @@ -586,10 +589,10 @@ for (size_t i = 0; i < num_terms; i++) { uint32_t num_qubits = 100; QkObs *obs = qk_obs_zero(num_qubits); - complex double coeff = 1; + QkComplex64 coeff = {1, 0}; QkBitTerm bit_terms[3] = {QkBitTerm_X, QkBitTerm_Y, QkBitTerm_Z}; uint32_t indices[3] = {0, 1, 2}; - QkObsTerm term = {&coeff, 3, bit_terms, indices, num_qubits}; + QkObsTerm term = {coeff, 3, bit_terms, indices, num_qubits}; qk_obs_add_term(obs, &term); size_t len = qk_obs_len(obs); @@ -630,7 +633,7 @@ for (size_t i = 0; i < num_terms; i++) { ```c QkObs *obs = qk_obs_identity(100); - complex double coeff = 2; + QkComplex64 coeff = {2, 0}; QkObs *result = qk_obs_multiply(obs, &coeff); ``` @@ -643,7 +646,7 @@ for (size_t i = 0; i < num_terms; i++) { Behavior is undefined if any of the following is violated * `obs` is a valid, non-null pointer to a `QkObs` - * `coeff` is a valid, non-null pointer to a `complex double` + * `coeff` is a valid, non-null pointer to a `QkComplex64` **Parameters** @@ -770,7 +773,7 @@ for (size_t i = 0; i < num_terms; i++) { QkObs *two = qk_obs_add(iden, iden); double tol = 1e-6; - QkObs *canonical = qk_obs_canonicalize(two); + QkObs *canonical = qk_obs_canonicalize(two, tol); ``` diff --git a/docs/api/qiskit-c/dev/qk-quantum-register.mdx b/docs/api/qiskit-c/dev/qk-quantum-register.mdx index 882e9418f47..29d24ba39e2 100644 --- a/docs/api/qiskit-c/dev/qk-quantum-register.mdx +++ b/docs/api/qiskit-c/dev/qk-quantum-register.mdx @@ -16,10 +16,22 @@ A common way to instantiate several bits at once is to create a register. A regi You can create a register by calling `qk_quantum_register_new()`, for example: +```c +#include + +QkQuantumRegister *qreg = qk_quantum_register_new(5, "my_qreg"); +``` + Which creates a new 5 qubit register named `"my_qreg"`. Then to add the register to a circuit you use the `qk_circuit_add_quantum_register()` function: +```c +QkCircuit *qc = qk_circuit_new(0, 0); +qk_circuit_add_quantum_register(qc, qreg); +uint32_t num_qubits = qk_circuit_num_qubits(qc); // 5 +``` + While circuits track registers, the registers themselves impart almost no behavioral differences on circuits. ## Functions diff --git a/docs/api/qiskit-c/dev/qk-target-entry.mdx b/docs/api/qiskit-c/dev/qk-target-entry.mdx index e233cb11fd8..379e2da0ad1 100644 --- a/docs/api/qiskit-c/dev/qk-target-entry.mdx +++ b/docs/api/qiskit-c/dev/qk-target-entry.mdx @@ -25,10 +25,10 @@ QkTargetEntry *entry = qk_target_entry_new(QkGate_CX); // Add mapping between (0,1) and properties duration of 10e-9 and unknown error. uint32_t qargs[2] = {0, 1}; -qk_target_entry_add(entry, qargs, 2, 10e-9, NAN); +qk_target_entry_add_property(entry, qargs, 2, 10e-9, NAN); // Add mapping between Global, and no set duration NAN and error of 0.003) -qk_target_entry_add(entry, NULL, 0, NAN, 0.003); +qk_target_entry_add_property(entry, NULL, 0, NAN, 0.003); ``` ## Functions @@ -36,9 +36,9 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); ### qk\_target\_entry\_new - Creates an entry to the `QkTarget` based on a `QkGate` instance with no parameters. + Creates an entry to the `QkTarget` based on a `QkGate` instance. - + #### Example @@ -46,13 +46,9 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); QkTargetEntry *entry = qk_target_entry_new(QkGate_H); ``` - - If the instance of `QkGate` uses fixed parameters, use `qk_target_entry_new_fixed`. Regular parameters are not currently supported. - - **Parameters** - **operation** – The `QkGate` whose properties this target entry defines. + **operation** – The `QkGate` whose properties this target entry defines. If the `QkGate` takes parameters (which can be checked with `qk_gate_num_params`) it will be added as a an instruction on the target which accepts any parameter value. If the gate only accepts a fixed parameter value you can use `qk_target_entry_new_fixed` instead. **Returns** @@ -64,7 +60,7 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); Creates a new entry for adding a measurement instruction to a `QkTarget`. - + #### Example @@ -92,7 +88,7 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); Creates a new entry for adding a reset instruction to a `QkTarget`. - + #### Example @@ -118,24 +114,24 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); ### qk\_target\_entry\_new\_fixed - Creates an entry to the `QkTarget` based on a `QkGate` instance with no parameters. + Creates an entry in the `QkTarget` based on a `QkGate` instance with no parameters. - + #### Example ```c double crx_params[1] = {3.14}; - QkTargetEntry *entry = qk_target_entry_new(QkGate_CRX, crx_params); + QkTargetEntry *entry = qk_target_entry_new_fixed(QkGate_CRX, crx_params); ``` - + #### Safety - + - The `params` type is expected to be a pointer to an array of `double` where the length matches the the expectations of the `QkGate`. If the array is insufficently long the behavior of this function is undefined as this will read outside the bounds of the array. It can be a null pointer if there are no params for a given gate. You can check `qk_gate_num_params` to determine how many qubits are required for a given gate. + The `params` type is expected to be a pointer to an array of `double` where the length matches the expectations of the `QkGate`. If the array is insufficiently long the behavior of this function is undefined as this will read outside the bounds of the array. It can be a null pointer if there are no params for a given gate. You can check `qk_gate_num_params` to determine how many qubits are required for a given gate. Adding a `QkGate` with regular parameters is not currently supported. @@ -156,7 +152,7 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); Retrieves the number of properties stored in the target entry. - + #### Example @@ -166,11 +162,11 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); size_t props_size = qk_target_entry_num_properties(entry); ``` - + #### Safety - + The behavior is undefined if `entry` is not a valid, non-null pointer to a `QkTargetEntry` object. @@ -188,7 +184,7 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); Frees the entry. - + #### Example @@ -197,11 +193,11 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); qk_target_entry_free(entry); ``` - + #### Safety - + The behavior is undefined if `entry` is not a valid, non-null pointer to a `QkTargetEntry` object. @@ -219,7 +215,7 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); Adds an instruction property instance based on its assigned qargs. - + #### Example @@ -229,11 +225,11 @@ qk_target_entry_add(entry, NULL, 0, NAN, 0.003); qk_target_entry_add_property(entry, qargs, 2, 0.0, 0.1); ``` - + #### Safety - + The behavior is undefined if `entry` is not a valid, non-null pointer to a `QkTargetEntry` object. diff --git a/docs/api/qiskit-c/dev/qk-target.mdx b/docs/api/qiskit-c/dev/qk-target.mdx index 775df13638d..40a9675b21e 100644 --- a/docs/api/qiskit-c/dev/qk-target.mdx +++ b/docs/api/qiskit-c/dev/qk-target.mdx @@ -12,7 +12,7 @@ python_api_name: QkTarget typedef struct QkTarget QkTarget ``` -A mapping of instructions and properties representing the partiucular constraints of a backend. Its purpose is to provide the compiler with information that allows it to compile an input circuit into another that is optimized taking in consideration the `QkTarget`’s specifications. This structure represents a low level interface to the main Target data structure in Rust, which represents the base class for its Python counterpart, [`Target`](/docs/api/qiskit/dev/qiskit.transpiler.Target#qiskit.transpiler.Target "qiskit.transpiler.Target"). +A mapping of instructions and properties representing the particular constraints of a backend. Its purpose is to provide the compiler with information that allows it to compile an input circuit into another that is optimized taking in consideration the `QkTarget`’s specifications. This structure represents a low level interface to the main Target data structure in Rust, which represents the base class for its Python counterpart, [`Target`](/docs/api/qiskit/dev/qiskit.transpiler.Target#qiskit.transpiler.Target "qiskit.transpiler.Target"). Here’s an example of how this structure works: @@ -27,7 +27,7 @@ QkTarget *target = qk_target_new(2); // error = NaN uint32_t qargs[2] = {0, 1}; QkTargetEntry *entry = qk_target_entry_new(QkGate_CX); -qk_target_entry_add(entry, qargs, 2, 0.0123, NAN); +qk_target_entry_add_property(entry, qargs, 2, 0.0123, NAN); // Add a CX Gate to the target qk_target_add_instruction(target, entry); @@ -48,7 +48,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Construct a new `QkTarget` with the given number of qubits. The number of qubits is bound to change if an instruction is added with properties that apply to a collection of qargs in which any index is higher than the specified number of qubits - + #### Example @@ -70,7 +70,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the number of qubits of this `QkTarget`. - + #### Example @@ -79,11 +79,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei uint32_t num_qubits = qk_target_num_qubits(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -101,7 +101,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the dt value of this `QkTarget`. - + #### Example @@ -111,11 +111,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei double dt = qk_target_dt(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -125,7 +125,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei **Returns** - The dt value of this `QkTarget` or `NaN` if not assigned. + The dt value of this `QkTarget` or `NAN` if not assigned. ### qk\_target\_granularity @@ -133,7 +133,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the granularity value of this `QkTarget`. - + #### Example @@ -143,11 +143,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei uint32_t granularity = qk_target_granularity(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -165,7 +165,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the `min_length` value of this `QkTarget`. - + #### Example @@ -175,11 +175,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei size_t min_length = qk_target_min_length(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -197,7 +197,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the `pulse_alignment` value of this `QkTarget`. - + #### Example @@ -207,11 +207,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei uint32_t pulse_alignment = qk_target_pulse_alignment(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -229,7 +229,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the `acquire_alignment` value of this `QkTarget`. - + #### Example @@ -239,11 +239,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei uint32_t acquire_alignment = qk_target_pulse_alignment(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -261,7 +261,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Sets the dt value of this `QkTarget`. - + #### Example @@ -270,11 +270,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei double dt = qk_target_set_dt(target, 10e-9); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -293,7 +293,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Sets the `granularity` value of this `QkTarget`. - + #### Example @@ -303,11 +303,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei qk_target_set_granularity(target, 2); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -326,7 +326,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Sets the `min_length` value of this `QkTarget`. - + #### Example @@ -336,11 +336,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei qk_target_set_min_length(target, 3); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -359,7 +359,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the `pulse_alignment` value of this `QkTarget`. - + #### Example @@ -369,11 +369,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei qk_target_set_pulse_alignment(target, 4); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -392,19 +392,21 @@ The Target C API currently only supports additions of `QkGate` instances with ei Sets the `acquire_alignment` value of this `QkTarget`. - + #### Example - - - QkTarget \*target = qk\_target\_new(5); // The value defaults to 0 qk\_target\_set\_acquire\_alignment(target, 5); + ```c + QkTarget *target = qk_target_new(5); + // The value defaults to 0 + qk_target_set_acquire_alignment(target, 5); + ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -423,7 +425,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Creates a copy of the `QkTarget`. - + #### Example @@ -437,11 +439,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei QkTarget *copied = qk_target_copy(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -459,7 +461,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Free the `QkTarget`. - + #### Example @@ -468,11 +470,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei qk_target_free(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -486,7 +488,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Adds a gate to the `QkTarget` through a `QkTargetEntry`. - + #### Example @@ -498,11 +500,11 @@ The Target C API currently only supports additions of `QkGate` instances with ei QkExitCode result = qk_target_add_instruction(target, entry); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. @@ -523,7 +525,7 @@ The Target C API currently only supports additions of `QkGate` instances with ei Modifies the properties of a gate in the `QkTarget`. - + #### Example @@ -535,18 +537,18 @@ The Target C API currently only supports additions of `QkGate` instances with ei qk_target_entry_add_property(entry, qargs, 2, 0.0, 0.1); qk_target_add_instruction(target, entry); - qk_target_update_property(target, QkGate_CRX, qargs, 2, 0.0012, 1.1) + qk_target_update_property(target, QkGate_CRX, qargs, 2, 0.0012, 1.1); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. - The `qargs` type is expected to be a pointer to an array of `uint32_t` where the length matches is specified by `num_qubits` and has to match the expectation of the gate. If the array is insufficently long the behavior of this function is undefined as this will read outside the bounds of the array. It can be a null pointer if there are no qubits for a given gate. You can check `qk_gate_num_qubits` to determine how many qubits are required for a given gate. + The `qargs` type is expected to be a pointer to an array of `uint32_t` where the length matches is specified by `num_qubits` and has to match the expectation of the gate. If the array is insufficiently long the behavior of this function is undefined as this will read outside the bounds of the array. It can be a null pointer if there are no qubits for a given gate. You can check `qk_gate_num_qubits` to determine how many qubits are required for a given gate. **Parameters** @@ -567,23 +569,23 @@ The Target C API currently only supports additions of `QkGate` instances with ei Returns the number of instructions tracked by a `QkTarget`. - + #### Example ```c QkTarget *target = qk_target_new(5); - QkTargetEntry *target_enty = qk_target_entry_new(QkGate_H); + QkTargetEntry *target_entry = qk_target_entry_new(QkGate_H); qk_target_add_instruction(target, target_entry); size_t num_instructions = qk_target_num_instructions(target); ``` - + #### Safety - + Behavior is undefined if `QkTarget` is not a valid, non-null pointer to a `QkTarget`. diff --git a/docs/api/qiskit-c/dev/qk-transpiler-passes.mdx b/docs/api/qiskit-c/dev/qk-transpiler-passes.mdx index c562042800d..a40d8604643 100644 --- a/docs/api/qiskit-c/dev/qk-transpiler-passes.mdx +++ b/docs/api/qiskit-c/dev/qk-transpiler-passes.mdx @@ -18,6 +18,109 @@ The Qiskit C API provides functions that execute transpiler passes in a standalo ## Functions +### qk\_transpiler\_pass\_standalone\_elide\_permutations + + + Run the ElidePermutations transpiler pass on a circuit. + + The ElidePermutations transpiler pass removes any permutation operations from a pre-layout circuit. + + This pass is intended to be run before a layout (mapping virtual qubits to physical qubits) is set during the transpilation pipeline. This pass iterates over the circuit and when a Swap gate is encountered it permutes the virtual qubits in the circuit and removes the swap gate. This will effectively remove any swap gates in the circuit prior to running layout. This optimization is not valid after a layout has been set and should not be run in this case. + + + + #### Example + + ```c + QkCircuit *qc = qk_circuit_new(4, 0); + for (uint32_t i = 0; i < qk_circuit_num_qubits(qc) - 1; i++) { + uint32_t qargs[2] = {i, i + 1}; + for (uint32_t j = 0; j + + #### Safety + + + + Behavior is undefined if `circuit` is not a valid, non-null pointer to a `QkCircuit`. + + **Parameters** + + **circuit** – A pointer to the circuit to run ElidePermutations on + + **Returns** + + QkElidePermutationsResult object that contains the results of the pass + + +### qk\_transpiler\_pass\_standalone\_remove\_identity\_equivalent + + + Run the RemoveIdentityEquivalent transpiler pass on a circuit. + + Removes gates whose effect is close to an identity operation up to a global phase and up to the specified tolerance. Parameterized gates are not considered by this pass. + + For a cutoff fidelity $f$, this pass removes gates whose average gate fidelity with respect to the identity is below $f$. Concretely, a gate $G$ is removed if $\bar F < f$ where + +$$ + +bar{F} = \frac{1 + d F_{\text{process}}}{1 + d},\ + +F_{\text{process}} = \frac{|\mathrm{Tr}(G)|^2}{d^2} + +$$ + + where $d = 2^n$ is the dimension of the gate for $n$ qubits. + + + + #### Example + + ```c + QkTarget *target = qk_target_new(5); + uint32_t current_num_qubits = qk_target_num_qubits(target); + QkTargetEntry *cx_entry = qk_target_entry_new(QkGate_CX); + for (uint32_t i = 0; i < current_num_qubits - 1; i++) { + uint32_t qargs[2] = {i, i + 1}; + double inst_error = 0.0090393 * (current_num_qubits - i); + double inst_duration = 0.020039; + qk_target_entry_add_property(cx_entry, qargs, 2, inst_duration, inst_error); + } + QkExitCode result_cx = qk_target_add_instruction(target, cx_entry); + QkCircuit *qc = qk_circuit_new(4, 0); + for (uint32_t i = 0; i < qk_circuit_num_qubits(qc) - 1; i++) { + uint32_t qargs[2] = {i, i + 1}; + for (uint32_t j = 0; j + + #### Safety + + + + Behavior is undefined if `circuit` or `target` is not a valid, non-null pointer to a `QkCircuit` and `QkTarget`. + + **Parameters** + + * **circuit** – A pointer to the circuit to run RemoveIdentityEquivalent on. This circuit pointed to will be updated with the modified circuit if the pass is able to remove any gates. + * **target** – The target for the RemoveIdentityEquivalent pass. If `approximation_degree` is set to `NAN` the tolerance for determining whether an operation is equivalent to identity will be set to the reported error rate in the target. Otherwise the `target` is not used as the tolerance is independent of the target. + * **approximation\_degree** – The degree to approximate for the equivalence check. This can be a floating point value between 0 and 1, or `NAN`. If the value is 1 this does not approximate above the floating point precision. For a value \< 1 this is used as a scaling factor for the cutoff fidelity. If the value is `NAN` this approximates up to the fidelity for the gate specified in `target`. + + ### qk\_transpiler\_pass\_standalone\_vf2\_layout @@ -29,12 +132,13 @@ The Qiskit C API provides functions that execute transpiler passes in a standalo By default, this pass will construct a heuristic scoring map based on the error rates in the provided `target` argument. The function will continue searching for layouts and use the heuristic scoring to return the layout which will run with the best estimated fidelity. - + #### Example ```c - QkTarget *target = qk_target_new(5) + QkTarget *target = qk_target_new(5); + uint32_t current_num_qubits = qk_target_num_qubits(target); QkTargetEntry *cx_entry = qk_target_entry_new(QkGate_CX); for (uint32_t i = 0; i < current_num_qubits - 1; i++) { uint32_t qargs[2] = {i, i + 1}; @@ -54,11 +158,11 @@ The Qiskit C API provides functions that execute transpiler passes in a standalo qk_vf2_layout_result_free(layout_result); ``` - + #### Safety - + Behavior is undefined if `circuit` or `target` is not a valid, non-null pointer to a `QkCircuit` and `QkTarget`. @@ -66,7 +170,7 @@ The Qiskit C API provides functions that execute transpiler passes in a standalo * **circuit** – A pointer to the circuit to run VF2Layout on * **target** – A pointer to the target to run the VF2Layout pass on - * **strict\_direction** – If true the pass will consider the edge direction in the connectivity described in the `target`. Typically setting this to `false` is desireable as an undirected search has more degrees of freedom and is more likely to find a layout (or a better layout if there are multiple choices) and correcting directionality is a simple operation for later transpilation stages. + * **strict\_direction** – If true the pass will consider the edge direction in the connectivity described in the `target`. Typically setting this to `false` is desirable as an undirected search has more degrees of freedom and is more likely to find a layout (or a better layout if there are multiple choices) and correcting directionality is a simple operation for later transpilation stages. * **call\_limit** – The number of state visits to attempt in each execution of the VF2 algorithm. If the value is set to a negative value the VF2 algorithm will run without any limit. * **time\_limit** – The total time in seconds to run for `VF2Layout`. This is checked after each layout search so it is not a hard time limit, but a soft limit that when checked if the set time has elapsed the function will return the best layout it has found so far. Set this to a value less than or equal to 0.0 to run without any time limit. * **max\_trials** – The maximum number of trials to run the VF2 algorithm to try and find layouts. If the value is negative this will be treated as unbounded which means the algorithm will run until all possible layouts are scored. If the value is 0 the number of trials will be limited based on the number of edges in the interaction or the coupling graph (whichever is larger). diff --git a/docs/api/qiskit-c/dev/qk-vf-2-layout-result.mdx b/docs/api/qiskit-c/dev/qk-vf-2-layout-result.mdx index 49b4838ca84..add6e944ab4 100644 --- a/docs/api/qiskit-c/dev/qk-vf-2-layout-result.mdx +++ b/docs/api/qiskit-c/dev/qk-vf-2-layout-result.mdx @@ -21,11 +21,11 @@ When running the `qk_transpiler_pass_standalone_vf2_layout` function it returns Check whether a result was found. - + #### Safety - + Behavior is undefined if `layout` is not a valid, non-null pointer to a `QkVF2LayoutResult`. @@ -43,11 +43,11 @@ When running the `qk_transpiler_pass_standalone_vf2_layout` function it returns Get the number of virtual qubits in the layout. - + #### Safety - + Behavior is undefined if `layout` is not a valid, non-null pointer to a `QkVF2LayoutResult`. The result must have a layout found. @@ -65,11 +65,11 @@ When running the `qk_transpiler_pass_standalone_vf2_layout` function it returns Get the physical qubit for a given virtual qubit - + #### Safety - + Behavior is undefined if `layout` is not a valid, non-null pointer to a `QkVF2LayoutResult`. Also qubit must be a valid qubit for the circuit and there must be a result found. @@ -88,7 +88,7 @@ When running the `qk_transpiler_pass_standalone_vf2_layout` function it returns Free a `QkVF2LayoutResult` object - + #### Example @@ -96,11 +96,11 @@ When running the `qk_transpiler_pass_standalone_vf2_layout` function it returns QkCircuit *qc = qk_circuit_new(1, 0); ``` - + #### Safety - + Behavior is undefined if `layout` is not a valid, non-null pointer to a `QkVF2Layout`. diff --git a/docs/api/qiskit-ibm-runtime/dev/execution-span-double-slice-span.mdx b/docs/api/qiskit-ibm-runtime/dev/execution-span-double-slice-span.mdx index 659ec9a74c5..a40284d933b 100644 --- a/docs/api/qiskit-ibm-runtime/dev/execution-span-double-slice-span.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/execution-span-double-slice-span.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.DoubleSliceSpan # DoubleSliceSpan - + Bases: [`ExecutionSpan`](execution-span-execution-span "qiskit_ibm_runtime.execution_span.execution_span.ExecutionSpan") An [`ExecutionSpan`](execution-span-execution-span "qiskit_ibm_runtime.execution_span.ExecutionSpan") for data stored in a sliceable format. @@ -53,7 +53,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.DoubleSliceSpan ### contains\_pub - + Return whether the pub with the given index has data with dependence on this span. **Parameters** @@ -71,7 +71,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.DoubleSliceSpan ### filter\_by\_pub - + Return a new span whose slices are filtered to the provided pub indices. For example, if this span contains slice information for pubs with indices 1, 3, 4 and `[1, 4]` is provided, then the span returned by this method will contain slice information for only those two indices, but be identical otherwise. @@ -91,7 +91,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.DoubleSliceSpan ### mask - + Return an array-valued mask specifying which parts of a pub result depend on this span. **Parameters** @@ -102,6 +102,10 @@ python_api_name: qiskit_ibm_runtime.execution_span.DoubleSliceSpan An array with the same shape as the pub data. + **Raises** + + **KeyError** – if the pub is not included in the span + **Return type** [*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v2.3)")\[*Any*, [*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v2.3)")\[[*bool*](https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.bool "(in NumPy v2.3)")]] diff --git a/docs/api/qiskit-ibm-runtime/dev/execution-span-execution-span.mdx b/docs/api/qiskit-ibm-runtime/dev/execution-span-execution-span.mdx index 8337b23d430..feec9309710 100644 --- a/docs/api/qiskit-ibm-runtime/dev/execution-span-execution-span.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/execution-span-execution-span.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.ExecutionSpan # ExecutionSpan - + Bases: `ABC` Abstract parent for classes that store an execution time span for a subset of job data. @@ -66,7 +66,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.ExecutionSpan ### contains\_pub - + Return whether the pub with the given index has data with dependence on this span. **Parameters** @@ -84,7 +84,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.ExecutionSpan ### filter\_by\_pub - + Return a new span whose slices are filtered to the provided pub indices. For example, if this span contains slice information for pubs with indices 1, 3, 4 and `[1, 4]` is provided, then the span returned by this method will contain slice information for only those two indices, but be identical otherwise. @@ -104,7 +104,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.ExecutionSpan ### mask - + Return an array-valued mask specifying which parts of a pub result depend on this span. **Parameters** @@ -115,6 +115,10 @@ python_api_name: qiskit_ibm_runtime.execution_span.ExecutionSpan An array with the same shape as the pub data. + **Raises** + + **KeyError** – if the pub is not included in the span + **Return type** [*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v2.3)")\[*Any*, [*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v2.3)")\[[*bool*](https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.bool "(in NumPy v2.3)")]] diff --git a/docs/api/qiskit-ibm-runtime/dev/execution-span-slice-span.mdx b/docs/api/qiskit-ibm-runtime/dev/execution-span-slice-span.mdx index 0abc0fd67c7..ba38b3d53cb 100644 --- a/docs/api/qiskit-ibm-runtime/dev/execution-span-slice-span.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/execution-span-slice-span.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.SliceSpan # SliceSpan - + Bases: [`ExecutionSpan`](execution-span-execution-span "qiskit_ibm_runtime.execution_span.execution_span.ExecutionSpan") An [`ExecutionSpan`](execution-span-execution-span "qiskit_ibm_runtime.execution_span.ExecutionSpan") for data stored in a sliceable format. @@ -53,7 +53,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.SliceSpan ### contains\_pub - + Return whether the pub with the given index has data with dependence on this span. **Parameters** @@ -71,7 +71,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.SliceSpan ### filter\_by\_pub - + Return a new span whose slices are filtered to the provided pub indices. For example, if this span contains slice information for pubs with indices 1, 3, 4 and `[1, 4]` is provided, then the span returned by this method will contain slice information for only those two indices, but be identical otherwise. @@ -91,7 +91,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.SliceSpan ### mask - + Return an array-valued mask specifying which parts of a pub result depend on this span. **Parameters** @@ -102,6 +102,10 @@ python_api_name: qiskit_ibm_runtime.execution_span.SliceSpan An array with the same shape as the pub data. + **Raises** + + **KeyError** – if the pub is not included in the span + **Return type** [*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v2.3)")\[*Any*, [*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v2.3)")\[[*bool*](https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.bool "(in NumPy v2.3)")]] diff --git a/docs/api/qiskit-ibm-runtime/dev/execution-span-twirled-slice-span.mdx b/docs/api/qiskit-ibm-runtime/dev/execution-span-twirled-slice-span.mdx index f8f7e2d55b3..3b6cc71807d 100644 --- a/docs/api/qiskit-ibm-runtime/dev/execution-span-twirled-slice-span.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/execution-span-twirled-slice-span.mdx @@ -8,12 +8,12 @@ python_api_name: qiskit_ibm_runtime.execution_span.TwirledSliceSpan # TwirledSliceSpan - + Bases: [`ExecutionSpan`](execution-span-execution-span "qiskit_ibm_runtime.execution_span.execution_span.ExecutionSpan") An [`ExecutionSpan`](execution-span-execution-span "qiskit_ibm_runtime.execution_span.ExecutionSpan") for data stored in a sliceable format when twirling. - This type of execution span references pub result data that came from a twirled sampler experiment which was executed by either prepending or appending an axis to paramater values to account for twirling. Concretely, `data_slices` is a map from pub slices to tuples `(twirled_shape, at_front, shape_slice, shots_slice)` where + This type of execution span references pub result data that came from a twirled sampler experiment which was executed by either prepending or appending an axis to parameter values to account for twirling. Concretely, `data_slices` is a map from pub slices to tuples `(twirled_shape, at_front, shape_slice, shots_slice)` where * `twirled_shape` is the shape tuple including a twirling axis, and where the last axis is shots per randomization, * `at_front` is whether `num_randomizations` is at the front of the tuple, as opposed to right before the `shots` axis at the end, @@ -24,7 +24,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.TwirledSliceSpan * **start** (*datetime*) – The start time of the span, in UTC. * **stop** (*datetime*) – The stop time of the span, in UTC. - * **data\_slices** (*dict\[int, tuple\[ShapeType, bool, slice, slice]]*) – A map from pub indices to length-4 tuples described above. + * **data\_slices** (*Mapping\[int, tuple\[ShapeType, bool, slice, slice]]*) – A map from pub indices to length-4 tuples described above. ## Attributes @@ -58,7 +58,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.TwirledSliceSpan ### contains\_pub - + Return whether the pub with the given index has data with dependence on this span. **Parameters** @@ -76,7 +76,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.TwirledSliceSpan ### filter\_by\_pub - + Return a new span whose slices are filtered to the provided pub indices. For example, if this span contains slice information for pubs with indices 1, 3, 4 and `[1, 4]` is provided, then the span returned by this method will contain slice information for only those two indices, but be identical otherwise. @@ -96,7 +96,7 @@ python_api_name: qiskit_ibm_runtime.execution_span.TwirledSliceSpan ### mask - + Return an array-valued mask specifying which parts of a pub result depend on this span. **Parameters** @@ -107,6 +107,10 @@ python_api_name: qiskit_ibm_runtime.execution_span.TwirledSliceSpan An array with the same shape as the pub data. + **Raises** + + **KeyError** – if the pub is not included in the span + **Return type** [*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v2.3)")\[*Any*, [*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v2.3)")\[[*bool*](https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.bool "(in NumPy v2.3)")]] diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-algiers.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-algiers.mdx index 833c02a3d17..b3bc9b497f0 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-algiers.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-algiers.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers # FakeAlgiers - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlgiers ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-almaden-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-almaden-v2.mdx index 46c46f3bafd..00da1b5bde2 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-almaden-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-almaden-v2.mdx @@ -41,10 +41,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -191,7 +187,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -209,7 +205,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 ### configuration - + Return the backend configuration. **Return type** @@ -217,27 +213,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -279,7 +257,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -292,7 +270,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -306,7 +285,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -347,7 +326,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAlmadenV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-armonk-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-armonk-v2.mdx index 1d792739f85..433e8592558 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-armonk-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-armonk-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 # FakeArmonkV2 - + Bases: `FakeBackendV2` A fake 1 qubit backend. @@ -35,10 +35,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -185,7 +181,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -203,7 +199,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 ### configuration - + Return the backend configuration. **Return type** @@ -211,27 +207,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -273,7 +251,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -286,7 +264,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -300,7 +279,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -341,7 +320,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeArmonkV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-athens-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-athens-v2.mdx index 7b336533326..9222a99ee80 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-athens-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-athens-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 # FakeAthensV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAthensV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-auckland.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-auckland.mdx index e380ceb6be5..3c71ab59909 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-auckland.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-auckland.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland # FakeAuckland - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeAuckland ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-belem-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-belem-v2.mdx index 31a05bfff4c..48d19afae84 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-belem-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-belem-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 # FakeBelemV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBelemV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-boeblingen-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-boeblingen-v2.mdx index a75e9c1774f..b508752133e 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-boeblingen-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-boeblingen-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 # FakeBoeblingenV2 - + Bases: `FakeBackendV2` A fake Boeblingen V2 backend. @@ -41,10 +41,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -191,7 +187,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -209,7 +205,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 ### configuration - + Return the backend configuration. **Return type** @@ -217,27 +213,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -279,7 +257,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -292,7 +270,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -306,7 +285,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -347,7 +326,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-bogota-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-bogota-v2.mdx index a901473ff4e..a4784842cf9 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-bogota-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-bogota-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 # FakeBogotaV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBogotaV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brisbane.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brisbane.mdx index deda2c8baf2..8e478255e28 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brisbane.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brisbane.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane # FakeBrisbane - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrisbane ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brooklyn-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brooklyn-v2.mdx index 3a30c520cee..9e02870b8b3 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brooklyn-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-brooklyn-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 # FakeBrooklynV2 - + Bases: `FakeBackendV2` A fake Brooklyn V2 backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBrooklynV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-burlington-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-burlington-v2.mdx index 8777d55254d..36329f4bcf6 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-burlington-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-burlington-v2.mdx @@ -37,10 +37,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -187,7 +183,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -205,7 +201,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 ### configuration - + Return the backend configuration. **Return type** @@ -213,27 +209,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -275,7 +253,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -288,7 +266,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -302,7 +281,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -343,7 +322,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cairo-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cairo-v2.mdx index 82d001430ec..ae0e51136b4 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cairo-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cairo-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 # FakeCairoV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCairoV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cambridge-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cambridge-v2.mdx index 7ef60ed0ddc..f36cd5bb425 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cambridge-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cambridge-v2.mdx @@ -43,10 +43,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -193,7 +189,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -211,7 +207,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 ### configuration - + Return the backend configuration. **Return type** @@ -219,27 +215,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -281,7 +259,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -294,7 +272,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -308,7 +287,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -349,7 +328,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCambridgeV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-casablanca-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-casablanca-v2.mdx index 978f335f135..42f07f6f171 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-casablanca-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-casablanca-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 # FakeCasablancaV2 - + Bases: `FakeBackendV2` A fake 7 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCasablancaV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cusco.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cusco.mdx index e65c7acfc60..8cc557943d2 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cusco.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-cusco.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco # FakeCusco - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeCusco ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-essex-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-essex-v2.mdx index 160f6642cae..f453a74697b 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-essex-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-essex-v2.mdx @@ -39,10 +39,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -189,7 +185,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -207,7 +203,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 ### configuration - + Return the backend configuration. **Return type** @@ -215,27 +211,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -277,7 +255,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -290,7 +268,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -304,7 +283,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -345,7 +324,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeEssexV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fez.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fez.mdx index 91423d0db07..bb29bab450d 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fez.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fez.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez # FakeFez - + Bases: `FakeBackendV2` A fake 156 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFez ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fractional-backend.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fractional-backend.mdx index 11722d79070..04d98ac37fe 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fractional-backend.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-fractional-backend.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend # FakeFractionalBackend - + Bases: `FakeBackendV2` A fake 5 qubit backend with dynamic and fractional feature modeled based on FakeLima. @@ -38,10 +38,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -188,7 +184,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -206,7 +202,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend ### configuration - + Return the backend configuration. **Return type** @@ -214,27 +210,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -276,7 +254,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -289,7 +267,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -303,7 +282,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -344,7 +323,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeFractionalBackend ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-geneva.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-geneva.mdx index 17ab9bf8c5d..c861a1f9f3b 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-geneva.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-geneva.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva # FakeGeneva - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGeneva ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-guadalupe-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-guadalupe-v2.mdx index d96adaa3664..e9e18acdbe1 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-guadalupe-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-guadalupe-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 # FakeGuadalupeV2 - + Bases: `FakeBackendV2` A fake 16 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-hanoi-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-hanoi-v2.mdx index 167cfb54a70..4498590f1af 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-hanoi-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-hanoi-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 # FakeHanoiV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeHanoiV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-jakarta-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-jakarta-v2.mdx index 32369bf232e..552b2f927f7 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-jakarta-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-jakarta-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 # FakeJakartaV2 - + Bases: `FakeBackendV2` A fake 7 qubit V2 backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJakartaV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-johannesburg-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-johannesburg-v2.mdx index d2c94d0edd5..3bb07024ae0 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-johannesburg-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-johannesburg-v2.mdx @@ -41,10 +41,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -191,7 +187,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -209,7 +205,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 ### configuration - + Return the backend configuration. **Return type** @@ -217,27 +213,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -279,7 +257,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -292,7 +270,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -306,7 +285,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -347,7 +326,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kawasaki.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kawasaki.mdx index 1bb8306a054..ccbbdfeed2e 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kawasaki.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kawasaki.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki # FakeKawasaki - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKawasaki ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kolkata-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kolkata-v2.mdx index 8329eb4db98..014e9404c35 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kolkata-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kolkata-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 # FakeKolkataV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKolkataV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyiv.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyiv.mdx index 2a489054f19..046d4a931c1 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyiv.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyiv.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv # FakeKyiv - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyiv ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyoto.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyoto.mdx index ab982092ab2..4e5dae5bda7 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyoto.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-kyoto.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto # FakeKyoto - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeKyoto ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lagos-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lagos-v2.mdx index 8b97bed77f9..39dde54d524 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lagos-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lagos-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 # FakeLagosV2 - + Bases: `FakeBackendV2` A fake 7 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLagosV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lima-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lima-v2.mdx index eed7b06a817..258e8db9bcb 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lima-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-lima-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 # FakeLimaV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLimaV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-london-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-london-v2.mdx index 25a6195c0e5..802230cb627 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-london-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-london-v2.mdx @@ -39,10 +39,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -189,7 +185,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -207,7 +203,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 ### configuration - + Return the backend configuration. **Return type** @@ -215,27 +211,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -277,7 +255,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -290,7 +268,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -304,7 +283,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -345,7 +324,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeLondonV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manhattan-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manhattan-v2.mdx index ee2d652e3f1..2cfd6637503 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manhattan-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manhattan-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 # FakeManhattanV2 - + Bases: `FakeBackendV2` A fake Manhattan backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManhattanV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manila-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manila-v2.mdx index eba13d875ff..33b310388b0 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manila-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-manila-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 # FakeManilaV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeManilaV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-marrakesh.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-marrakesh.mdx index d6720a2b927..f3a3719b277 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-marrakesh.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-marrakesh.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh # FakeMarrakesh - + Bases: `FakeBackendV2` A fake 156 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMarrakesh ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-melbourne-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-melbourne-v2.mdx index 470d7a65fcc..e5648b6f857 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-melbourne-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-melbourne-v2.mdx @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMelbourneV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-montreal-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-montreal-v2.mdx index 6b54d87a5d5..4f552623e34 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-montreal-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-montreal-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 # FakeMontrealV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMontrealV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-mumbai-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-mumbai-v2.mdx index 85140f64429..f5cbeaec1eb 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-mumbai-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-mumbai-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 # FakeMumbaiV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeMumbaiV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-nairobi-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-nairobi-v2.mdx index a7fc300e9ce..a86798c3031 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-nairobi-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-nairobi-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 # FakeNairobiV2 - + Bases: `FakeBackendV2` A fake 7 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeNairobiV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-osaka.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-osaka.mdx index 5090c03dda9..a56fbba5cf7 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-osaka.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-osaka.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka # FakeOsaka - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOsaka ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-oslo.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-oslo.mdx index 23b59c2aede..fa4f07d594b 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-oslo.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-oslo.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo # FakeOslo - + Bases: `FakeBackendV2` A fake 7 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOslo ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-ourense-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-ourense-v2.mdx index 813a3f090d4..599775003a5 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-ourense-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-ourense-v2.mdx @@ -37,10 +37,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -187,7 +183,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -205,7 +201,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 ### configuration - + Return the backend configuration. **Return type** @@ -213,27 +209,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -275,7 +253,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -288,7 +266,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -302,7 +281,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -343,7 +322,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeOurenseV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-paris-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-paris-v2.mdx index 1ef58fbf916..cef17606c9c 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-paris-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-paris-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 # FakeParisV2 - + Bases: `FakeBackendV2` A fake Paris backend. @@ -43,10 +43,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -193,7 +189,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -211,7 +207,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 ### configuration - + Return the backend configuration. **Return type** @@ -219,27 +215,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -281,7 +259,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -294,7 +272,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -308,7 +287,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -349,7 +328,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeParisV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-peekskill.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-peekskill.mdx index 1fd91ed4be8..17fda667e20 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-peekskill.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-peekskill.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill # FakePeekskill - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePeekskill ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-perth.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-perth.mdx index de36a70105c..50f4dc63ebe 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-perth.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-perth.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth # FakePerth - + Bases: `FakeBackendV2` A fake 7 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePerth ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-poughkeepsie-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-poughkeepsie-v2.mdx index 88fdab56315..ba7fa264da1 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-poughkeepsie-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-poughkeepsie-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 # FakePoughkeepsieV2 - + Bases: `FakeBackendV2` A fake Poughkeepsie backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-prague.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-prague.mdx index 82ab8ea9429..0903960ea01 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-prague.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-prague.mdx @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakePrague ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quebec.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quebec.mdx index fbacfcf8def..edf796099e0 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quebec.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quebec.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec # FakeQuebec - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuebec ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quito-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quito-v2.mdx index 932c6dafaf2..75cb6bf5e36 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quito-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-quito-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 # FakeQuitoV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeQuitoV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rochester-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rochester-v2.mdx index dd755fae780..b6b1c7abde3 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rochester-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rochester-v2.mdx @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRochesterV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rome-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rome-v2.mdx index bd86aff7bdf..11949615116 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rome-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-rome-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 # FakeRomeV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeRomeV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-santiago-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-santiago-v2.mdx index 2186a6df85a..2a71e032ac6 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-santiago-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-santiago-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 # FakeSantiagoV2 - + Bases: `FakeBackendV2` A fake Santiago backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSantiagoV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sherbrooke.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sherbrooke.mdx index 3aa44c2fe01..6af8cdcc330 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sherbrooke.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sherbrooke.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke # FakeSherbrooke - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSherbrooke ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-singapore-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-singapore-v2.mdx index fb6dfc95524..f5d882fd8e9 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-singapore-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-singapore-v2.mdx @@ -41,10 +41,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -191,7 +187,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -209,7 +205,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 ### configuration - + Return the backend configuration. **Return type** @@ -217,27 +213,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -279,7 +257,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -292,7 +270,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -306,7 +285,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -347,7 +326,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSingaporeV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sydney-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sydney-v2.mdx index 7336b292c9d..857fb852e54 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sydney-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-sydney-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 # FakeSydneyV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeSydneyV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-torino.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-torino.mdx index e3564280a66..4d99a9d2dfb 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-torino.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-torino.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino # FakeTorino - + Bases: `FakeBackendV2` A fake 133 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorino ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-toronto-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-toronto-v2.mdx index 84ed49be7b2..97489d2eb92 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-toronto-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-toronto-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 # FakeTorontoV2 - + Bases: `FakeBackendV2` A fake 27 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeTorontoV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-valencia-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-valencia-v2.mdx index 3acd6913217..01841a79f8d 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-valencia-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-valencia-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 # FakeValenciaV2 - + Bases: `FakeBackendV2` A fake 5 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeValenciaV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-vigo-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-vigo-v2.mdx index 242fc942ae9..1b48a593821 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-vigo-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-vigo-v2.mdx @@ -37,10 +37,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -187,7 +183,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -205,7 +201,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 ### configuration - + Return the backend configuration. **Return type** @@ -213,27 +209,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -275,7 +253,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -288,7 +266,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -302,7 +281,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -343,7 +322,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeVigoV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-washington-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-washington-v2.mdx index ad914424523..2d6d0e7f2c6 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-washington-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-washington-v2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 # FakeWashingtonV2 - + Bases: `FakeBackendV2` A fake 127 qubit backend. @@ -31,10 +31,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -181,7 +177,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -199,7 +195,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 ### configuration - + Return the backend configuration. **Return type** @@ -207,27 +203,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -269,7 +247,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -282,7 +260,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -296,7 +275,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -337,7 +316,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeWashingtonV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-yorktown-v2.mdx b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-yorktown-v2.mdx index c4337ba74a6..b8dd8f1ab29 100644 --- a/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-yorktown-v2.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/fake-provider-fake-yorktown-v2.mdx @@ -39,10 +39,6 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap "(in Qiskit v2.1)") object - ### defs\_filename - - - ### dirname @@ -189,7 +185,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -207,7 +203,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 ### configuration - + Return the backend configuration. **Return type** @@ -215,27 +211,9 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED)Return the pulse defaults for the backend - - **Parameters** - - **refresh** (*bool*) – If `True`, re-retrieve the backend defaults from the local file. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* - - ### properties - + Return the backend properties **Parameters** @@ -277,7 +255,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 ### refresh - + Update the data files from its real counterpart This method pulls the latest backend data files from their real counterpart and overwrites the corresponding files in the local installation: @@ -290,7 +268,8 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 **Parameters** - **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **service** ([*QiskitRuntimeService*](qiskit-runtime-service "qiskit_ibm_runtime.qiskit_runtime_service.QiskitRuntimeService")) – A `QiskitRuntimeService` instance + * **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates. **Raises** @@ -304,7 +283,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 ### run - + Run on the fake backend using a simulator. This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job "(in Qiskit v2.1)") object. @@ -345,7 +324,7 @@ python_api_name: qiskit_ibm_runtime.fake_provider.FakeYorktownV2 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/ibm-backend.mdx b/docs/api/qiskit-ibm-runtime/dev/ibm-backend.mdx index 5218b4a27e1..9bffe71c65e 100644 --- a/docs/api/qiskit-ibm-runtime/dev/ibm-backend.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/ibm-backend.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend # IBMBackend - + Bases: [`BackendV2`](/docs/api/qiskit/qiskit.providers.BackendV2 "(in Qiskit v2.1)") Backend class interfacing with an IBM Quantum backend. @@ -296,7 +296,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### \_\_call\_\_ - + Call self as a function. **Return type** @@ -306,7 +306,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### check\_faulty - + Check if the input circuit uses faulty qubits or edges. **Parameters** @@ -324,7 +324,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### configuration - + Return the backend configuration. Backend configuration contains fixed information about the backend, such as its name, number of qubits, basis gates, coupling map, quantum volume, etc. @@ -352,29 +352,9 @@ python_api_name: qiskit_ibm_runtime.IBMBackend *QasmBackendConfiguration* - ### defaults - - - (DEPRECATED) Return the pulse defaults for the backend. - - The schema for default pulse configuration can be found in [Qiskit/ibm-quantum-schemas/default\_pulse\_configuration](https://github.com/Qiskit/ibm-quantum-schemas/blob/main/schemas/default_pulse_configuration_schema.json). - - **Parameters** - - **refresh** (*bool*) – If `True`, re-query the server for the backend pulse defaults. Otherwise, return a cached version. - - **Returns** - - The backend pulse defaults or `None` if the backend does not support pulse. - - **Return type** - - *PulseDefaults* | None - - ### get\_translation\_stage\_plugin - + Return the default translation stage plugin name for IBM backends. **Return type** @@ -384,7 +364,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### properties - + Return the backend properties, subject to optional filtering. This data describes qubits properties (such as T1 and T2), gates properties (such as gate length and error), and other general properties of the backend. @@ -436,7 +416,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### refresh - + Retrieve the newest backend configuration and refresh the current backend target. **Return type** @@ -446,7 +426,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### run - + **Raises** **IBMBackendError** – The run() method is no longer supported. @@ -474,7 +454,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### status - + Return the backend status. @@ -496,7 +476,7 @@ python_api_name: qiskit_ibm_runtime.IBMBackend ### target\_history - + A [`qiskit.transpiler.Target`](/docs/api/qiskit/qiskit.transpiler.Target "(in Qiskit v2.1)") object for the backend. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/qiskit-runtime-service.mdx b/docs/api/qiskit-ibm-runtime/dev/qiskit-runtime-service.mdx index c0d61f96cd0..a71df9f09b0 100644 --- a/docs/api/qiskit-ibm-runtime/dev/qiskit-runtime-service.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/qiskit-runtime-service.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService # QiskitRuntimeService - + Bases: `object` Class for interacting with the Qiskit Runtime service. @@ -87,6 +87,16 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService *Dict*\[str, str] | None + ### active\_instance + + + Return the crn of the current active instance. + + **Return type** + + str + + ### backend @@ -174,7 +184,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService ### check\_pending\_jobs - + (DEPRECATED) Check the number of pending jobs and wait for the oldest pending job if the maximum number of pending jobs has been reached. **Return type** @@ -204,7 +214,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService ### delete\_job - + (DEPRECATED) Delete a runtime job. Note that this operation cannot be reversed. @@ -225,7 +235,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService ### instances - + **Return a list that contains a series of dictionaries with the** following instance identifiers per instance: “crn”, “plan”, “name”. @@ -264,7 +274,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService ### jobs - + Retrieve all runtime jobs, subject to optional filtering. **Parameters** @@ -274,7 +284,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService * **backend\_name** (*str | None*) – Name of the backend to retrieve jobs from. * **pending** (*bool | None*) – Filter by job pending state. If `True`, ‘QUEUED’ and ‘RUNNING’ jobs are included. If `False`, ‘DONE’, ‘CANCELLED’ and ‘ERROR’ jobs are included. * **program\_id** (*str | None*) – Filter by Program ID. - * **instance** (*str | None*) – (DEPRECATED) This is parameter is no longer supported on the new IBM Quantum Platform. It will be removed in a future release. + * **instance** (*str | None*) – Filter by IBM Cloud instance crn. * **job\_tags** (*List\[str] | None*) – Filter by tags assigned to jobs. Matched jobs are associated with all tags. * **session\_id** (*str | None*) – Filter by session id. All jobs in the session will be returned in desceding order of the job creation date. * **created\_after** (*datetime | None*) – Filter by the given start date, in local time. This is used to find jobs whose creation dates are after (greater than or equal to) this local date/time. @@ -296,7 +306,7 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService ### least\_busy - + Return the least busy available backend. **Parameters** @@ -382,8 +392,8 @@ python_api_name: qiskit_ibm_runtime.QiskitRuntimeService ### usage - - For the ibm\_quantum channel return monthly open plan usage information. For the ibm\_cloud and ibm\_quantum\_platform channels return usage information for the current active instance. + + Return usage information for the current active instance. **Returns** diff --git a/docs/api/qiskit-ibm-runtime/dev/runtime-decoder.mdx b/docs/api/qiskit-ibm-runtime/dev/runtime-decoder.mdx index 10b71575692..bcfd494705f 100644 --- a/docs/api/qiskit-ibm-runtime/dev/runtime-decoder.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/runtime-decoder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.RuntimeDecoder # RuntimeDecoder - + Bases: `JSONDecoder` JSON Decoder used by runtime service. @@ -40,7 +40,7 @@ python_api_name: qiskit_ibm_runtime.RuntimeDecoder ### object\_hook - + Called to decode object. **Parameters** diff --git a/docs/api/qiskit-ibm-runtime/dev/runtime-encoder.mdx b/docs/api/qiskit-ibm-runtime/dev/runtime-encoder.mdx index 3151e7c3f81..2af82f45282 100644 --- a/docs/api/qiskit-ibm-runtime/dev/runtime-encoder.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/runtime-encoder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.RuntimeEncoder # RuntimeEncoder - + Bases: `JSONEncoder` JSON Encoder used by runtime service. @@ -45,7 +45,7 @@ python_api_name: qiskit_ibm_runtime.RuntimeEncoder ### default - + Implement this method in a subclass such that it returns a serializable object for `o`, or calls the base implementation (to raise a `TypeError`). For example, to support arbitrary iterators, you could implement default like this: diff --git a/docs/api/qiskit-ibm-runtime/dev/transpiler-passes-fold-rzz-angle.mdx b/docs/api/qiskit-ibm-runtime/dev/transpiler-passes-fold-rzz-angle.mdx index 612a499eaa6..0cd952f23ff 100644 --- a/docs/api/qiskit-ibm-runtime/dev/transpiler-passes-fold-rzz-angle.mdx +++ b/docs/api/qiskit-ibm-runtime/dev/transpiler-passes-fold-rzz-angle.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit_ibm_runtime.transpiler.passes.FoldRzzAngle # FoldRzzAngle - + Bases: [`TransformationPass`](/docs/api/qiskit/qiskit.transpiler.TransformationPass "(in Qiskit v2.1)") Fold Rzz gate angle into calibrated range of 0-pi/2 with local gate tweaks. @@ -92,7 +92,7 @@ python_api_name: qiskit_ibm_runtime.transpiler.passes.FoldRzzAngle ### run - + Run a pass on the DAGCircuit. This is implemented by the pass developer. **Parameters** diff --git a/docs/api/qiskit/dev/_toc.json b/docs/api/qiskit/dev/_toc.json index 3fb689da4e9..fdb217da8a0 100644 --- a/docs/api/qiskit/dev/_toc.json +++ b/docs/api/qiskit/dev/_toc.json @@ -1332,6 +1332,10 @@ "title": "EnlargeWithAncilla", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.EnlargeWithAncilla" }, + { + "title": "Error", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.Error" + }, { "title": "FilterOpNodes", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.FilterOpNodes" @@ -1440,6 +1444,10 @@ "title": "Layout2qDistance", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.Layout2qDistance" }, + { + "title": "LayoutTransformation", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.LayoutTransformation" + }, { "title": "LinearFunctionsToPermutations", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.LinearFunctionsToPermutations" @@ -1460,6 +1468,10 @@ "title": "MCMTSynthesisVChain", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain" }, + { + "title": "MCMTSynthesisXGate", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate" + }, { "title": "MCXSynthesis1CleanB95", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95" @@ -1496,6 +1508,10 @@ "title": "MCXSynthesisNDirtyI15", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15" }, + { + "title": "MCXSynthesisNoAuxHP24", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24" + }, { "title": "MCXSynthesisNoAuxV24", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24" @@ -1556,6 +1572,14 @@ "title": "OptimizeCliffords", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffords" }, + { + "title": "OptimizeCliffordT", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffordT" + }, + { + "title": "OptimizeSwapBeforeMeasure", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeSwapBeforeMeasure" + }, { "title": "PadDelay", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay" @@ -1612,6 +1636,10 @@ "title": "ResetAfterMeasureSimplification", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.ResetAfterMeasureSimplification" }, + { + "title": "ResourceEstimation", + "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.ResourceEstimation" + }, { "title": "SabreLayout", "url": "/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreLayout" diff --git a/docs/api/qiskit/dev/circuit.mdx b/docs/api/qiskit/dev/circuit.mdx index 8ffab3cacfc..28dd623429c 100644 --- a/docs/api/qiskit/dev/circuit.mdx +++ b/docs/api/qiskit/dev/circuit.mdx @@ -583,10 +583,10 @@ A circuit can contain manual classical storage locations, represented internally Various parametric [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") instances in Qiskit can be parametrized in ways that are designed to be resolved at compile time. These are characterized by the use of the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") and [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") classes. -| | | -| ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")(name, \*\[, uuid]) | A compile-time symbolic parameter. | -| [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression")(symbol\_map, expr, \*\[, ...]) | ParameterExpression class to enable creating expressions of Parameters. | +| | | +| ------------------------------------------------------------------------------------------------ | ---------------------------------- | +| [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") | A compile-time symbolic parameter. | +| [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") | A parameter expression. | The main way that this differs from the `expr.Var` variables used in real-time classical computation is that [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") is a symbolic representation of a mathematical expression. The semantics of the expression are those of regular mathematics over the continuous real numbers (and, in limited cases, over the complex numbers). In contrast, [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") is a handle to a variable stored on a classical computer, such as a floating-point value or an fixed-width integer, which are always discrete. @@ -596,10 +596,10 @@ The “compile-time” part of these parameters means that you typically will wa You may want to use many parameters that are related to each other. To make this easier (and to avoid you needing to come up with many names), you can use the convenience constructor [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector"). The elements of the vector are all valid [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") instances, of a special subclass [`ParameterVectorElement`](qiskit.circuit.ParameterVectorElement "qiskit.circuit.ParameterVectorElement"). -| | | -| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector")(name\[, length]) | A container of many related [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects. | -| [`ParameterVectorElement`](qiskit.circuit.ParameterVectorElement "qiskit.circuit.ParameterVectorElement")(vector, index\[, uuid]) | An element of a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector"). | +| | | +| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector")(name\[, length]) | A container of many related [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects. | +| [`ParameterVectorElement`](qiskit.circuit.ParameterVectorElement "qiskit.circuit.ParameterVectorElement") | An element of a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector"). | diff --git a/docs/api/qiskit/dev/qasm3.mdx b/docs/api/qiskit/dev/qasm3.mdx index 638425987a6..947cdcc2873 100644 --- a/docs/api/qiskit/dev/qasm3.mdx +++ b/docs/api/qiskit/dev/qasm3.mdx @@ -94,7 +94,7 @@ Both of these exporter functions are single-use wrappers around the main [`Expor If `True`, then bits may be contained in more than one register. If so, the registers will be emitted using “alias” definitions, which might not be well supported by consumers of OpenQASM 3. Defaults to `False` or the value of `alias_classical_registers`. - New in version 0.25.0. + * **indent** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – the indentation string to use for each level within an indented block. Can be set to the empty string to disable indentation. @@ -249,7 +249,9 @@ Currently only two high-level functions are offered, as Qiskit support for impor [**QASM3ImporterError**](#qiskit.qasm3.QASM3ImporterError "qiskit.qasm3.QASM3ImporterError") – if the OpenQASM 3 file is invalid, or cannot be represented by a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). - New in version 2.1: The `annotation_handlers` argument. This requires `qiskit_qasm3_import>=0.6.0`. + + The `annotation_handlers` argument. This requires `qiskit_qasm3_import>=0.6.0`. + ### loads @@ -274,7 +276,9 @@ Currently only two high-level functions are offered, as Qiskit support for impor [**QASM3ImporterError**](#qiskit.qasm3.QASM3ImporterError "qiskit.qasm3.QASM3ImporterError") – if the OpenQASM 3 file is invalid, or cannot be represented by a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). - New in version 2.1: The `annotation_handlers` argument. This requires `qiskit_qasm3_import>=0.6.0`. + + The `annotation_handlers` argument. This requires `qiskit_qasm3_import>=0.6.0`. + Both of these two functions raise [`QASM3ImporterError`](#qiskit.qasm3.QASM3ImporterError "qiskit.qasm3.QASM3ImporterError") on failure. diff --git a/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx b/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx index 19a18d6d0b8..8fe703046bb 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx @@ -156,11 +156,11 @@ python_api_name: qiskit.circuit.AnnotatedOperation **Parameters** - **parameter** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – + **parameter** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – **Return type** - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") + [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") diff --git a/docs/api/qiskit/dev/qiskit.circuit.CommutationChecker.mdx b/docs/api/qiskit/dev/qiskit.circuit.CommutationChecker.mdx index d417c5d7af5..4fe0da62612 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.CommutationChecker.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.CommutationChecker.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.CommutationChecker # CommutationChecker - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)") Check commutations of two operations. @@ -39,7 +39,7 @@ $$ ### check\_commutation\_entries - + Returns stored commutation relation if any **Parameters** @@ -60,23 +60,23 @@ $$ ### clear\_cached\_commutations - + Clears the dictionary holding cached commutations ### commute - + Checks if two Operations commute. The return value of True means that the operations truly commute, and the return value of False means that either the operations do not commute or that the commutation check was skipped (for example, when the operations have conditions or have too many qubits). **Parameters** - * **op1** ([*Operation*](qiskit.circuit.Operation "qiskit.circuit.operation.Operation")) – first operation. - * **qargs1** ([*List*](https://docs.python.org/3/library/typing.html#typing.List "(in Python v3.13)")) – first operation’s qubits. - * **cargs1** ([*List*](https://docs.python.org/3/library/typing.html#typing.List "(in Python v3.13)")) – first operation’s clbits. - * **op2** ([*Operation*](qiskit.circuit.Operation "qiskit.circuit.operation.Operation")) – second operation. - * **qargs2** ([*List*](https://docs.python.org/3/library/typing.html#typing.List "(in Python v3.13)")) – second operation’s qubits. - * **cargs2** ([*List*](https://docs.python.org/3/library/typing.html#typing.List "(in Python v3.13)")) – second operation’s clbits. + * **op1** ([*Operation*](qiskit.circuit.Operation "qiskit.circuit.Operation")) – first operation. + * **qargs1** (*Sequence\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – first operation’s qubits. + * **cargs1** (*Sequence\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – first operation’s clbits. + * **op2** ([*Operation*](qiskit.circuit.Operation "qiskit.circuit.Operation")) – second operation. + * **qargs2** (*Sequence\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – second operation’s qubits. + * **cargs2** (*Sequence\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – second operation’s clbits. * **max\_num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – the maximum number of qubits to consider, the check may be skipped if the number of qubits for either operation exceeds this amount. * **approximation\_degree** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – If the average gate fidelity in between the two operations is above this number (up to `1e-12`) they are assumed to commute. @@ -91,7 +91,7 @@ $$ ### commute\_nodes - + Checks if two DAGOpNodes commute. **Parameters** @@ -106,7 +106,7 @@ $$ ### num\_cached\_entries - + Returns number of cached entries diff --git a/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx b/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx index aba15f352b5..d707d2a7c2c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx @@ -8,8 +8,8 @@ python_api_name: qiskit.circuit.Parameter # Parameter - - Bases: [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + + Bases: [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") A compile-time symbolic parameter. @@ -25,28 +25,23 @@ python_api_name: qiskit.circuit.Parameter from qiskit.circuit import QuantumCircuit, Parameter # create the parameter - phi = Parameter('phi') + phi = Parameter("phi") qc = QuantumCircuit(1) # parameterize the rotation qc.rx(phi, 0) - qc.draw('mpl') + qc.draw("mpl") # bind the parameters after circuit to create a bound circuit bc = qc.assign_parameters({phi: 3.14}) bc.measure_all() - bc.draw('mpl') + bc.draw("mpl") ``` ![Circuit diagram output by the previous code.](/docs/images/api/qiskit/dev/qiskit-circuit-Parameter-1_00.avif) ![Circuit diagram output by the previous code.](/docs/images/api/qiskit/dev/qiskit-circuit-Parameter-1_01.avif) - **Parameters** - - * **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – name of the `Parameter`, used for visual representation. This can be any Unicode string, e.g. “ϕ”. - * **uuid** (*UUID | None*) – For advanced usage only. Override the UUID of this parameter, in order to make it compare equal to some other parameter object. By default, two parameters with the same name do not compare equal to help catch shadowing bugs when two circuits containing the same named parameters are spurious combined. Setting the `uuid` field when creating two parameters to the same thing (along with the same name) allows them to be equal. This is useful during serialization and deserialization. - ## Attributes ### name @@ -58,7 +53,11 @@ python_api_name: qiskit.circuit.Parameter ### parameters - Returns a set of the unbound Parameters in the expression. + Get the parameters present in the expression. + + + Qiskit guarantees equality (via `==`) of parameters retrieved from an expression with the original [`Parameter`](#qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects used to create this expression, but does **not guarantee** `is` comparisons to succeed. + ### uuid @@ -73,36 +72,36 @@ python_api_name: qiskit.circuit.Parameter ### abs - - Absolute of a ParameterExpression + + Take the absolute value of the expression. ### arccos - - Arccos of a ParameterExpression + + Arccosine of the expression. ### arcsin - - Arcsin of a ParameterExpression + + Arcsine of the expression. ### arctan - - Arctan of a ParameterExpression + + Arctangent of the expression. ### assign - + Assign one parameter to a value, which can either be numeric or another parameter expression. **Parameters** - * **parameter** ([*Parameter*](#qiskit.circuit.Parameter "qiskit.circuit.Parameter")) – A parameter in this expression whose value will be updated. + * **parameter** – A parameter in this expression whose value will be updated. * **value** – The new value to bind to. **Returns** @@ -112,19 +111,19 @@ python_api_name: qiskit.circuit.Parameter ### bind - + Binds the provided set of parameters to their corresponding values. **Parameters** - * **parameter\_values** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")) – Mapping of Parameter instances to the numeric value to which they will be bound. - * **allow\_unknown\_parameters** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – If `False`, raises an error if `parameter_values` contains Parameters in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. + * **parameter\_values** – Mapping of [`Parameter`](#qiskit.circuit.Parameter "qiskit.circuit.Parameter") instances to the numeric value to which they will be bound. + * **allow\_unknown\_parameters** – If `False`, raises an error if `parameter_values` contains [`Parameter`](#qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. **Raises** * [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – - * If parameter\_values contains Parameters outside those in self. - If a non-numeric value is passed in parameter\_values. + * If parameter\_values contains parameters outside those in self. - If a non-numeric value is passed in `parameter_values`. * [**ZeroDivisionError**](https://docs.python.org/3/library/exceptions.html#ZeroDivisionError "(in Python v3.13)") – @@ -132,128 +131,122 @@ python_api_name: qiskit.circuit.Parameter **Returns** - A new expression parameterized by any parameters which were not bound by parameter\_values. - - **Return type** - - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + A new expression parameterized by any parameters which were not bound by `parameter_values`. ### conjugate - - Return the conjugate. - - **Return type** - - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + + Return the complex conjugate of the expression. ### cos - - Cosine of a ParameterExpression + + Cosine of the expression. ### exp - - Exponential of a ParameterExpression + + Exponentiate the expression. ### gradient - - Get the derivative of a real parameter expression w\.r.t. a specified parameter. - - - This method assumes that the parameter expression represents a **real expression only**. Calling this method on a parameter expression that contains complex values, or binding complex values to parameters in the expression is undefined behavior. - + + Return derivative of this expression with respect to the input parameter. **Parameters** - **param** ([*Parameter*](#qiskit.circuit.Parameter "qiskit.circuit.Parameter")) – Parameter w\.r.t. which we want to take the derivative + **param** – The parameter with respect to which the derivative is calculated. **Returns** - ParameterExpression representing the gradient of param\_expr w\.r.t. param or complex or float number - - **Return type** - - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") | [complex](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") + The derivative. ### is\_real - - Return whether the expression is real - + + Check whether the expression represents a real number. - ### log - - - Logarithm of a ParameterExpression + Note that this will return `None` if there are unbound parameters, in which case it cannot be determined whether the expression is real. - ### numeric + ### is\_symbol - - Return a Python number representing this object, using the most restrictive of [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)"), [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") and [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") that is valid for this object. + + Check if the expression corresponds to a plain symbol. - In general, an [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") is only returned if the expression only involved symbolic integers. If floating-point values were used during the evaluation, the return value will be a [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") regardless of whether the represented value is an integer. This is because floating-point values “infect” symbolic computations by their inexact nature, and symbolic libraries will use inexact floating-point semantics not exact real-number semantics when they are involved. If you want to assert that all floating-point calculations *were* carried out at infinite precision (i.e. [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") could represent every intermediate value exactly), you can use [`float.is_integer()`](https://docs.python.org/3/library/stdtypes.html#float.is_integer "(in Python v3.13)") to check if the return float represents an integer and cast it using [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") if so. This would be an unusual pattern; typically one requires this by only ever using explicitly [`Rational`](https://docs.python.org/3/library/numbers.html#numbers.Rational "(in Python v3.13)") objects while working with symbolic expressions. + **Returns** - This is more reliable and performant than using [`is_real()`](#qiskit.circuit.Parameter.is_real "qiskit.circuit.Parameter.is_real") followed by calling [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") or [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)"), as in some cases [`is_real()`](#qiskit.circuit.Parameter.is_real "qiskit.circuit.Parameter.is_real") needs to force a floating-point evaluation to determine an accurate result to work around bugs in the upstream symbolic libraries. + `True` is this expression corresponds to a symbol, `False` otherwise. + - **Returns** + ### log - A Python number representing the object. + + Take the natural logarithm of the expression. + - **Raises** + ### numeric - [**TypeError**](https://docs.python.org/3/library/exceptions.html#TypeError "(in Python v3.13)") – if there are unbound parameters. + + Cast this expression to a numeric value. - **Return type** + **Parameters** - [int](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") | [complex](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") + **strict** – If `True` (default) this function raises an error if there are any unbound symbols in the expression. If `False`, this allows casting if the expression represents a numeric value, regardless of unbound symbols. For example `(0 * Parameter("x"))` is 0 but has the symbol `x` present. ### sign - - Sign of a ParameterExpression + + Return the sign of the expression. ### sin - - Sine of a ParameterExpression + + Sine of the expression. ### subs - - Substitute self with the corresponding parameter in `parameter_map`. + + Returns a new expression with replacement parameters. **Parameters** - * **parameter\_map** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")) – - * **allow\_unknown\_parameters** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – + * **parameter\_map** – Mapping from [`Parameter`](#qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in `self` to the [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") instances with which they should be replaced. + * **allow\_unknown\_parameters** – If `False`, raises an error if `parameter_map` contains [`Parameter`](#qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – + + * If parameter\_map contains parameters outside those in self. - If the replacement parameters in `parameter_map` would result in a name conflict in the generated expression. + + **Returns** + + A new expression with the specified parameters replaced. ### sympify - - Return symbolic expression as a raw Sympy object. + + Return a SymPy equivalent of this expression. - - This is for interoperability only. Qiskit will not accept or work with raw Sympy or Symegine expressions in its parameters, because they do not contain the tracking information used in circuit-parameter binding and assignment. - + **Returns** + + A SymPy equivalent of this expression. ### tan - - Tangent of a ParameterExpression + + Tangent of the expression. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx b/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx index 48746af5c4f..dbc13ec3b93 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx @@ -8,88 +8,81 @@ python_api_name: qiskit.circuit.ParameterExpression # ParameterExpression - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)") - ParameterExpression class to enable creating expressions of Parameters. + A parameter expression. - Create a new [`ParameterExpression`](#qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression"). - - Not intended to be called directly, but to be instantiated via operations on other [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") or [`ParameterExpression`](#qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") objects. The constructor of this object is **not** a public interface and should not ever be used directly. - - **Parameters** - - * **symbol\_map** (*Dict\[*[*Parameter*](qiskit.circuit.Parameter "qiskit.circuit.Parameter")*, \[*[*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression")*,* [*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")*, or* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – Mapping of [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") instances to the `sympy.Symbol` serving as their placeholder in expr. - * **expr** (*SymbolExpr or* [*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – Expression with Rust’s SymbolExprPy or string + This is backed by Qiskit’s symbolic expression engine and a cache for the parameters inside the expression. ## Attributes ### parameters - Returns a set of the unbound Parameters in the expression. + Get the parameters present in the expression. + + + Qiskit guarantees equality (via `==`) of parameters retrieved from an expression with the original [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects used to create this expression, but does **not guarantee** `is` comparisons to succeed. + ## Methods ### abs - - Absolute of a ParameterExpression + + Take the absolute value of the expression. ### arccos - - Arccos of a ParameterExpression + + Arccosine of the expression. ### arcsin - - Arcsin of a ParameterExpression + + Arcsine of the expression. ### arctan - - Arctan of a ParameterExpression + + Arctangent of the expression. ### assign - + Assign one parameter to a value, which can either be numeric or another parameter expression. **Parameters** - * **parameter** ([*Parameter*](qiskit.circuit.Parameter "qiskit.circuit.Parameter")) – A parameter in this expression whose value will be updated. - * **value** ([*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The new value to bind to. + * **parameter** – A parameter in this expression whose value will be updated. + * **value** – The new value to bind to. **Returns** A new expression parameterized by any parameters which were not bound by assignment. - - **Return type** - - [*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") ### bind - + Binds the provided set of parameters to their corresponding values. **Parameters** - * **parameter\_values** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")) – Mapping of Parameter instances to the numeric value to which they will be bound. - * **allow\_unknown\_parameters** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – If `False`, raises an error if `parameter_values` contains Parameters in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. + * **parameter\_values** – Mapping of [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") instances to the numeric value to which they will be bound. + * **allow\_unknown\_parameters** – If `False`, raises an error if `parameter_values` contains [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. **Raises** * [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – - * If parameter\_values contains Parameters outside those in self. - If a non-numeric value is passed in parameter\_values. + * If parameter\_values contains parameters outside those in self. - If a non-numeric value is passed in `parameter_values`. * [**ZeroDivisionError**](https://docs.python.org/3/library/exceptions.html#ZeroDivisionError "(in Python v3.13)") – @@ -97,142 +90,122 @@ python_api_name: qiskit.circuit.ParameterExpression **Returns** - A new expression parameterized by any parameters which were not bound by parameter\_values. - - **Return type** - - [*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + A new expression parameterized by any parameters which were not bound by `parameter_values`. ### conjugate - - Return the conjugate. - - **Return type** - - [*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + + Return the complex conjugate of the expression. ### cos - - Cosine of a ParameterExpression + + Cosine of the expression. ### exp - - Exponential of a ParameterExpression + + Exponentiate the expression. ### gradient - - Get the derivative of a real parameter expression w\.r.t. a specified parameter. - - - This method assumes that the parameter expression represents a **real expression only**. Calling this method on a parameter expression that contains complex values, or binding complex values to parameters in the expression is undefined behavior. - + + Return derivative of this expression with respect to the input parameter. **Parameters** - **param** ([*Parameter*](qiskit.circuit.Parameter "qiskit.circuit.Parameter")) – Parameter w\.r.t. which we want to take the derivative + **param** – The parameter with respect to which the derivative is calculated. **Returns** - ParameterExpression representing the gradient of param\_expr w\.r.t. param or complex or float number - - **Return type** - - [*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") | [complex](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") + The derivative. ### is\_real - - Return whether the expression is real - + + Check whether the expression represents a real number. - ### log - - - Logarithm of a ParameterExpression + Note that this will return `None` if there are unbound parameters, in which case it cannot be determined whether the expression is real. - ### numeric + ### is\_symbol - - Return a Python number representing this object, using the most restrictive of [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)"), [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") and [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") that is valid for this object. + + Check if the expression corresponds to a plain symbol. - In general, an [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") is only returned if the expression only involved symbolic integers. If floating-point values were used during the evaluation, the return value will be a [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") regardless of whether the represented value is an integer. This is because floating-point values “infect” symbolic computations by their inexact nature, and symbolic libraries will use inexact floating-point semantics not exact real-number semantics when they are involved. If you want to assert that all floating-point calculations *were* carried out at infinite precision (i.e. [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") could represent every intermediate value exactly), you can use [`float.is_integer()`](https://docs.python.org/3/library/stdtypes.html#float.is_integer "(in Python v3.13)") to check if the return float represents an integer and cast it using [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") if so. This would be an unusual pattern; typically one requires this by only ever using explicitly [`Rational`](https://docs.python.org/3/library/numbers.html#numbers.Rational "(in Python v3.13)") objects while working with symbolic expressions. + **Returns** - This is more reliable and performant than using [`is_real()`](#qiskit.circuit.ParameterExpression.is_real "qiskit.circuit.ParameterExpression.is_real") followed by calling [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") or [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)"), as in some cases [`is_real()`](#qiskit.circuit.ParameterExpression.is_real "qiskit.circuit.ParameterExpression.is_real") needs to force a floating-point evaluation to determine an accurate result to work around bugs in the upstream symbolic libraries. + `True` is this expression corresponds to a symbol, `False` otherwise. + - **Returns** + ### log - A Python number representing the object. + + Take the natural logarithm of the expression. + - **Raises** + ### numeric - [**TypeError**](https://docs.python.org/3/library/exceptions.html#TypeError "(in Python v3.13)") – if there are unbound parameters. + + Cast this expression to a numeric value. - **Return type** + **Parameters** - [int](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") | [complex](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") + **strict** – If `True` (default) this function raises an error if there are any unbound symbols in the expression. If `False`, this allows casting if the expression represents a numeric value, regardless of unbound symbols. For example `(0 * Parameter("x"))` is 0 but has the symbol `x` present. ### sign - - Sign of a ParameterExpression + + Return the sign of the expression. ### sin - - Sine of a ParameterExpression + + Sine of the expression. ### subs - - Returns a new Expression with replacement Parameters. + + Returns a new expression with replacement parameters. **Parameters** - * **parameter\_map** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")) – Mapping from Parameters in self to the ParameterExpression instances with which they should be replaced. - * **allow\_unknown\_parameters** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – If `False`, raises an error if `parameter_map` contains Parameters in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. + * **parameter\_map** – Mapping from [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in `self` to the [`ParameterExpression`](#qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") instances with which they should be replaced. + * **allow\_unknown\_parameters** – If `False`, raises an error if `parameter_map` contains [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. **Raises** [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – - * If parameter\_map contains Parameters outside those in self. - If the replacement Parameters in parameter\_map would result in a name conflict in the generated expression. + * If parameter\_map contains parameters outside those in self. - If the replacement parameters in `parameter_map` would result in a name conflict in the generated expression. **Returns** A new expression with the specified parameters replaced. - - **Return type** - - [*ParameterExpression*](#qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") ### sympify - - Return symbolic expression as a raw Sympy object. + + Return a SymPy equivalent of this expression. - - This is for interoperability only. Qiskit will not accept or work with raw Sympy or Symegine expressions in its parameters, because they do not contain the tracking information used in circuit-parameter binding and assignment. - + **Returns** + + A SymPy equivalent of this expression. ### tan - - Tangent of a ParameterExpression + + Tangent of the expression. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ParameterVector.mdx b/docs/api/qiskit/dev/qiskit.circuit.ParameterVector.mdx index 2d99cac7af0..6b46981ab47 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ParameterVector.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ParameterVector.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.ParameterVector # ParameterVector - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)") A container of many related [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects. @@ -39,7 +39,7 @@ python_api_name: qiskit.circuit.ParameterVector ### index - + Find the index of a [`ParameterVectorElement`](qiskit.circuit.ParameterVectorElement "qiskit.circuit.ParameterVectorElement") within the list. It is typically much faster to use the [`ParameterVectorElement.index`](qiskit.circuit.ParameterVectorElement#index "qiskit.circuit.ParameterVectorElement.index") property. @@ -47,7 +47,7 @@ python_api_name: qiskit.circuit.ParameterVector ### resize - + Resize the parameter vector. If necessary, new elements are generated. Note that the UUID of each [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") element will be generated deterministically given the root UUID of the `ParameterVector` and the index of the element. In particular, if a `ParameterVector` is resized to be smaller and then later resized to be larger, the UUID of the later generated element at a given index will be the same as the UUID of the previous element at that index. This is to ensure that the parameter instances do not change. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ParameterVectorElement.mdx b/docs/api/qiskit/dev/qiskit.circuit.ParameterVectorElement.mdx index a9ba9a9ac02..673ed1ad722 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ParameterVectorElement.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ParameterVectorElement.mdx @@ -8,8 +8,8 @@ python_api_name: qiskit.circuit.ParameterVectorElement # ParameterVectorElement - - Bases: [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.parameter.Parameter") + + Bases: [`Parameter`](qiskit.circuit.Parameter "qiskit._accelerate.circuit.Parameter") An element of a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector"). @@ -17,11 +17,6 @@ python_api_name: qiskit.circuit.ParameterVectorElement There is very little reason to ever construct this class directly. Objects of this type are automatically constructed efficiently as part of creating a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector"). - **Parameters** - - * **name** – name of the `Parameter`, used for visual representation. This can be any Unicode string, e.g. “ϕ”. - * **uuid** – For advanced usage only. Override the UUID of this parameter, in order to make it compare equal to some other parameter object. By default, two parameters with the same name do not compare equal to help catch shadowing bugs when two circuits containing the same named parameters are spurious combined. Setting the `uuid` field when creating two parameters to the same thing (along with the same name) allows them to be equal. This is useful during serialization and deserialization. - ## Attributes ### index @@ -39,7 +34,11 @@ python_api_name: qiskit.circuit.ParameterVectorElement ### parameters - Returns a set of the unbound Parameters in the expression. + Get the parameters present in the expression. + + + Qiskit guarantees equality (via `==`) of parameters retrieved from an expression with the original [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects used to create this expression, but does **not guarantee** `is` comparisons to succeed. + ### uuid @@ -60,36 +59,36 @@ python_api_name: qiskit.circuit.ParameterVectorElement ### abs - - Absolute of a ParameterExpression + + Take the absolute value of the expression. ### arccos - - Arccos of a ParameterExpression + + Arccosine of the expression. ### arcsin - - Arcsin of a ParameterExpression + + Arcsine of the expression. ### arctan - - Arctan of a ParameterExpression + + Arctangent of the expression. ### assign - + Assign one parameter to a value, which can either be numeric or another parameter expression. **Parameters** - * **parameter** ([*Parameter*](qiskit.circuit.Parameter "qiskit.circuit.Parameter")) – A parameter in this expression whose value will be updated. + * **parameter** – A parameter in this expression whose value will be updated. * **value** – The new value to bind to. **Returns** @@ -99,19 +98,19 @@ python_api_name: qiskit.circuit.ParameterVectorElement ### bind - + Binds the provided set of parameters to their corresponding values. **Parameters** - * **parameter\_values** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")) – Mapping of Parameter instances to the numeric value to which they will be bound. - * **allow\_unknown\_parameters** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – If `False`, raises an error if `parameter_values` contains Parameters in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. + * **parameter\_values** – Mapping of [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") instances to the numeric value to which they will be bound. + * **allow\_unknown\_parameters** – If `False`, raises an error if `parameter_values` contains [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. **Raises** * [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – - * If parameter\_values contains Parameters outside those in self. - If a non-numeric value is passed in parameter\_values. + * If parameter\_values contains parameters outside those in self. - If a non-numeric value is passed in `parameter_values`. * [**ZeroDivisionError**](https://docs.python.org/3/library/exceptions.html#ZeroDivisionError "(in Python v3.13)") – @@ -119,128 +118,122 @@ python_api_name: qiskit.circuit.ParameterVectorElement **Returns** - A new expression parameterized by any parameters which were not bound by parameter\_values. - - **Return type** - - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + A new expression parameterized by any parameters which were not bound by `parameter_values`. ### conjugate - - Return the conjugate. - - **Return type** - - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") + + Return the complex conjugate of the expression. ### cos - - Cosine of a ParameterExpression + + Cosine of the expression. ### exp - - Exponential of a ParameterExpression + + Exponentiate the expression. ### gradient - - Get the derivative of a real parameter expression w\.r.t. a specified parameter. - - - This method assumes that the parameter expression represents a **real expression only**. Calling this method on a parameter expression that contains complex values, or binding complex values to parameters in the expression is undefined behavior. - + + Return derivative of this expression with respect to the input parameter. **Parameters** - **param** ([*Parameter*](qiskit.circuit.Parameter "qiskit.circuit.Parameter")) – Parameter w\.r.t. which we want to take the derivative + **param** – The parameter with respect to which the derivative is calculated. **Returns** - ParameterExpression representing the gradient of param\_expr w\.r.t. param or complex or float number - - **Return type** - - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") | [complex](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") + The derivative. ### is\_real - - Return whether the expression is real - + + Check whether the expression represents a real number. - ### log - - - Logarithm of a ParameterExpression + Note that this will return `None` if there are unbound parameters, in which case it cannot be determined whether the expression is real. - ### numeric + ### is\_symbol - - Return a Python number representing this object, using the most restrictive of [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)"), [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") and [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") that is valid for this object. + + Check if the expression corresponds to a plain symbol. - In general, an [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") is only returned if the expression only involved symbolic integers. If floating-point values were used during the evaluation, the return value will be a [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") regardless of whether the represented value is an integer. This is because floating-point values “infect” symbolic computations by their inexact nature, and symbolic libraries will use inexact floating-point semantics not exact real-number semantics when they are involved. If you want to assert that all floating-point calculations *were* carried out at infinite precision (i.e. [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") could represent every intermediate value exactly), you can use [`float.is_integer()`](https://docs.python.org/3/library/stdtypes.html#float.is_integer "(in Python v3.13)") to check if the return float represents an integer and cast it using [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") if so. This would be an unusual pattern; typically one requires this by only ever using explicitly [`Rational`](https://docs.python.org/3/library/numbers.html#numbers.Rational "(in Python v3.13)") objects while working with symbolic expressions. + **Returns** - This is more reliable and performant than using [`is_real()`](#qiskit.circuit.ParameterVectorElement.is_real "qiskit.circuit.ParameterVectorElement.is_real") followed by calling [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") or [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)"), as in some cases [`is_real()`](#qiskit.circuit.ParameterVectorElement.is_real "qiskit.circuit.ParameterVectorElement.is_real") needs to force a floating-point evaluation to determine an accurate result to work around bugs in the upstream symbolic libraries. + `True` is this expression corresponds to a symbol, `False` otherwise. + - **Returns** + ### log - A Python number representing the object. + + Take the natural logarithm of the expression. + - **Raises** + ### numeric - [**TypeError**](https://docs.python.org/3/library/exceptions.html#TypeError "(in Python v3.13)") – if there are unbound parameters. + + Cast this expression to a numeric value. - **Return type** + **Parameters** - [int](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") | [complex](https://docs.python.org/3/library/functions.html#complex "(in Python v3.13)") + **strict** – If `True` (default) this function raises an error if there are any unbound symbols in the expression. If `False`, this allows casting if the expression represents a numeric value, regardless of unbound symbols. For example `(0 * Parameter("x"))` is 0 but has the symbol `x` present. ### sign - - Sign of a ParameterExpression + + Return the sign of the expression. ### sin - - Sine of a ParameterExpression + + Sine of the expression. ### subs - - Substitute self with the corresponding parameter in `parameter_map`. + + Returns a new expression with replacement parameters. **Parameters** - * **parameter\_map** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")) – - * **allow\_unknown\_parameters** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – + * **parameter\_map** – Mapping from [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in `self` to the [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") instances with which they should be replaced. + * **allow\_unknown\_parameters** – If `False`, raises an error if `parameter_map` contains [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter")s in the keys outside those present in the expression. If `True`, any such parameters are simply ignored. + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – + + * If parameter\_map contains parameters outside those in self. - If the replacement parameters in `parameter_map` would result in a name conflict in the generated expression. + + **Returns** + + A new expression with the specified parameters replaced. ### sympify - - Return symbolic expression as a raw Sympy object. + + Return a SymPy equivalent of this expression. - - This is for interoperability only. Qiskit will not accept or work with raw Sympy or Symegine expressions in its parameters, because they do not contain the tracking information used in circuit-parameter binding and assignment. - + **Returns** + + A SymPy equivalent of this expression. ### tan - - Tangent of a ParameterExpression + + Tangent of the expression. diff --git a/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx b/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx index 2edf9171e79..e6977aac9f7 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx @@ -2513,7 +2513,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. * **q\_controls** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – The qubits used as the controls. * **q\_target** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit targeted by the gate. * **use\_basis\_gates** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – use p, u, cx basis gates. @@ -2541,7 +2541,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **lam** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. + * **lam** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. * **q\_controls** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – The qubits used as the controls. * **q\_target** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit targeted by the gate. * **use\_basis\_gates** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – use p, u, cx basis gates. @@ -2672,7 +2672,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. * **qubits** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – The qubits to apply the gate to. **Returns** @@ -2693,7 +2693,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – THe angle of the rotation. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – THe angle of the rotation. * **qubit** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. **Returns** @@ -2828,8 +2828,8 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. - * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the axis of rotation in the x-y plane. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. + * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the axis of rotation in the x-y plane. * **qubit** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. **Returns** @@ -2915,9 +2915,9 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **vx** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – x-component of the rotation axis. - * **vy** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – y-component of the rotation axis. - * **vz** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – z-component of the rotation axis. + * **vx** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – x-component of the rotation axis. + * **vy** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – y-component of the rotation axis. + * **vz** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – z-component of the rotation axis. * **qubit** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. **Returns** @@ -2960,7 +2960,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The angle of the rotation. * **qubit1** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. * **qubit2** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. @@ -3004,7 +3004,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. * **qubit1** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. * **qubit2** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. @@ -3026,7 +3026,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. + * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. * **qubit** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. **Returns** @@ -3047,7 +3047,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. * **qubit1** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. * **qubit2** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. @@ -3069,7 +3069,7 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The rotation angle of the gate. * **qubit1** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. * **qubit2** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. @@ -3259,9 +3259,9 @@ python_api_name: qiskit.circuit.QuantumCircuit **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The $\theta$ rotation angle of the gate. - * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The $\phi$ rotation angle of the gate. - * **lam** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The $\lambda$ rotation angle of the gate. + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The $\theta$ rotation angle of the gate. + * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The $\phi$ rotation angle of the gate. + * **lam** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The $\lambda$ rotation angle of the gate. * **qubit** ([*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*QuantumRegister*](circuit#qiskit.circuit.QuantumRegister "qiskit.circuit.QuantumRegister") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *|*[*slice*](https://docs.python.org/3/library/functions.html#slice "(in Python v3.13)") *|*[*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.13)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]*) – The qubit(s) to apply the gate to. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx index 65435a14287..5b11f3df579 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx @@ -37,470 +37,6 @@ python_api_name: qiskit.circuit.library.AND ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.AND.unit "qiskit.circuit.library.AND.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.AND.num_input_vars "qiskit.circuit.library.AND.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.AND.num_input_vars "qiskit.circuit.library.AND.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.AND.num_vars "qiskit.circuit.library.AND.num_vars") + [`num_stretches()`](#qiskit.circuit.library.AND.num_stretches "qiskit.circuit.library.AND.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.AND.num_captured_vars "qiskit.circuit.library.AND.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.AND.duration "qiskit.circuit.library.AND.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx index 603bd8f08d8..d94d3acd46e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx @@ -95,480 +95,6 @@ python_api_name: qiskit.circuit.library.CDKMRippleCarryAdder ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.CDKMRippleCarryAdder.unit "qiskit.circuit.library.CDKMRippleCarryAdder.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.CDKMRippleCarryAdder.num_input_vars "qiskit.circuit.library.CDKMRippleCarryAdder.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.CDKMRippleCarryAdder.num_input_vars "qiskit.circuit.library.CDKMRippleCarryAdder.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.CDKMRippleCarryAdder.num_vars "qiskit.circuit.library.CDKMRippleCarryAdder.num_vars") + [`num_stretches()`](#qiskit.circuit.library.CDKMRippleCarryAdder.num_stretches "qiskit.circuit.library.CDKMRippleCarryAdder.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.CDKMRippleCarryAdder.num_captured_vars "qiskit.circuit.library.CDKMRippleCarryAdder.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits, i.e. the number of bits in each input register. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.CDKMRippleCarryAdder.duration "qiskit.circuit.library.CDKMRippleCarryAdder.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx index f860ab18ec2..ee89257896a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx @@ -27,470 +27,6 @@ python_api_name: qiskit.circuit.library.Diagonal ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.Diagonal.unit "qiskit.circuit.library.Diagonal.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.Diagonal.num_input_vars "qiskit.circuit.library.Diagonal.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.Diagonal.num_input_vars "qiskit.circuit.library.Diagonal.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.Diagonal.num_vars "qiskit.circuit.library.Diagonal.num_vars") + [`num_stretches()`](#qiskit.circuit.library.Diagonal.num_stretches "qiskit.circuit.library.Diagonal.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.Diagonal.num_captured_vars "qiskit.circuit.library.Diagonal.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.Diagonal.duration "qiskit.circuit.library.Diagonal.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx index d8e573e94cd..b91c68d4610 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx @@ -62,480 +62,6 @@ python_api_name: qiskit.circuit.library.DraperQFTAdder ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.DraperQFTAdder.unit "qiskit.circuit.library.DraperQFTAdder.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.DraperQFTAdder.num_input_vars "qiskit.circuit.library.DraperQFTAdder.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.DraperQFTAdder.num_input_vars "qiskit.circuit.library.DraperQFTAdder.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.DraperQFTAdder.num_vars "qiskit.circuit.library.DraperQFTAdder.num_vars") + [`num_stretches()`](#qiskit.circuit.library.DraperQFTAdder.num_stretches "qiskit.circuit.library.DraperQFTAdder.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.DraperQFTAdder.num_captured_vars "qiskit.circuit.library.DraperQFTAdder.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits, i.e. the number of bits in each input register. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.DraperQFTAdder.duration "qiskit.circuit.library.DraperQFTAdder.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx index 72bbc5d77d2..21cdd3e3dd5 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx @@ -86,476 +86,6 @@ python_api_name: qiskit.circuit.library.EfficientSU2 ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.EfficientSU2.unit "qiskit.circuit.library.EfficientSU2.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.EfficientSU2.num_input_vars "qiskit.circuit.library.EfficientSU2.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.EfficientSU2.num_input_vars "qiskit.circuit.library.EfficientSU2.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.EfficientSU2.num_vars "qiskit.circuit.library.EfficientSU2.num_vars") + [`num_stretches()`](#qiskit.circuit.library.EfficientSU2.num_stretches "qiskit.circuit.library.EfficientSU2.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.EfficientSU2.num_captured_vars "qiskit.circuit.library.EfficientSU2.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of total parameters that can be set to distinct values. - - This does not change when the parameters are bound or exchanged for same parameters, and therefore is different from `num_parameters` which counts the number of unique [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects currently in the circuit. - - **Returns** - - The number of parameters originally available in the circuit. - - - This quantity does not require the circuit to be built yet. - - - - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - ### parameter\_bounds @@ -566,120 +96,6 @@ python_api_name: qiskit.circuit.library.EfficientSU2 The parameter bounds. - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.EfficientSU2.duration "qiskit.circuit.library.EfficientSU2.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx index 4a35a836dea..def7d20e759 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx @@ -26,90 +26,6 @@ python_api_name: qiskit.circuit.library.EvolvedOperatorAnsatz ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.EvolvedOperatorAnsatz.unit "qiskit.circuit.library.EvolvedOperatorAnsatz.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - ### evolution @@ -124,260 +40,6 @@ python_api_name: qiskit.circuit.library.EvolvedOperatorAnsatz [EvolutionSynthesis](qiskit.synthesis.EvolutionSynthesis "qiskit.synthesis.EvolutionSynthesis") - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.EvolvedOperatorAnsatz.num_input_vars "qiskit.circuit.library.EvolvedOperatorAnsatz.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.EvolvedOperatorAnsatz.num_input_vars "qiskit.circuit.library.EvolvedOperatorAnsatz.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.EvolvedOperatorAnsatz.num_vars "qiskit.circuit.library.EvolvedOperatorAnsatz.num_vars") + [`num_stretches()`](#qiskit.circuit.library.EvolvedOperatorAnsatz.num_stretches "qiskit.circuit.library.EvolvedOperatorAnsatz.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.EvolvedOperatorAnsatz.num_captured_vars "qiskit.circuit.library.EvolvedOperatorAnsatz.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of total parameters that can be set to distinct values. - - This does not change when the parameters are bound or exchanged for same parameters, and therefore is different from `num_parameters` which counts the number of unique [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects currently in the circuit. - - **Returns** - - The number of parameters originally available in the circuit. - - - This quantity does not require the circuit to be built yet. - - - ### num\_qubits @@ -388,102 +50,6 @@ python_api_name: qiskit.circuit.library.EvolvedOperatorAnsatz The number of qubits. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - ### operators @@ -498,152 +64,12 @@ python_api_name: qiskit.circuit.library.EvolvedOperatorAnsatz [list](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)") - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - - ### parameter\_bounds - - - The parameter bounds for the unbound parameters in the circuit. - - **Returns** - - A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - ### preferred\_init\_points Getter of preferred initial points based on the given initial state. - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.EvolvedOperatorAnsatz.duration "qiskit.circuit.library.EvolvedOperatorAnsatz.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx index 18c579ec719..4842d768488 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx @@ -34,470 +34,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.ExactReciprocal.unit "qiskit.circuit.library.ExactReciprocal.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ExactReciprocal.num_input_vars "qiskit.circuit.library.ExactReciprocal.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ExactReciprocal.num_input_vars "qiskit.circuit.library.ExactReciprocal.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.ExactReciprocal.num_vars "qiskit.circuit.library.ExactReciprocal.num_vars") + [`num_stretches()`](#qiskit.circuit.library.ExactReciprocal.num_stretches "qiskit.circuit.library.ExactReciprocal.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.ExactReciprocal.num_captured_vars "qiskit.circuit.library.ExactReciprocal.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.ExactReciprocal.duration "qiskit.circuit.library.ExactReciprocal.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx index 0f7cba29d51..973587bce3f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx @@ -104,476 +104,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.ExcitationPreserving.unit "qiskit.circuit.library.ExcitationPreserving.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ExcitationPreserving.num_input_vars "qiskit.circuit.library.ExcitationPreserving.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ExcitationPreserving.num_input_vars "qiskit.circuit.library.ExcitationPreserving.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.ExcitationPreserving.num_vars "qiskit.circuit.library.ExcitationPreserving.num_vars") + [`num_stretches()`](#qiskit.circuit.library.ExcitationPreserving.num_stretches "qiskit.circuit.library.ExcitationPreserving.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.ExcitationPreserving.num_captured_vars "qiskit.circuit.library.ExcitationPreserving.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of total parameters that can be set to distinct values. - - This does not change when the parameters are bound or exchanged for same parameters, and therefore is different from `num_parameters` which counts the number of unique [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects currently in the circuit. - - **Returns** - - The number of parameters originally available in the circuit. - - - This quantity does not require the circuit to be built yet. - - - - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - ### parameter\_bounds @@ -584,120 +114,6 @@ $$ The parameter bounds. - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.ExcitationPreserving.duration "qiskit.circuit.library.ExcitationPreserving.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx index 3813095acd4..cf2b6313799 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx @@ -48,470 +48,6 @@ python_api_name: qiskit.circuit.library.FourierChecking ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.FourierChecking.unit "qiskit.circuit.library.FourierChecking.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.FourierChecking.num_input_vars "qiskit.circuit.library.FourierChecking.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.FourierChecking.num_input_vars "qiskit.circuit.library.FourierChecking.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.FourierChecking.num_vars "qiskit.circuit.library.FourierChecking.num_vars") + [`num_stretches()`](#qiskit.circuit.library.FourierChecking.num_stretches "qiskit.circuit.library.FourierChecking.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.FourierChecking.num_captured_vars "qiskit.circuit.library.FourierChecking.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.FourierChecking.duration "qiskit.circuit.library.FourierChecking.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx index d81499a7f07..bfca6b9c59e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx @@ -23,12 +23,6 @@ python_api_name: qiskit.circuit.library.FunctionalPauliRotations ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - ### basis @@ -41,166 +35,6 @@ python_api_name: qiskit.circuit.library.FunctionalPauliRotations The kind of Pauli rotation used in controlled rotation. - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.FunctionalPauliRotations.unit "qiskit.circuit.library.FunctionalPauliRotations.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - ### num\_ancilla\_qubits @@ -211,112 +45,6 @@ python_api_name: qiskit.circuit.library.FunctionalPauliRotations The minimal number of ancillas required. - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.FunctionalPauliRotations.num_input_vars "qiskit.circuit.library.FunctionalPauliRotations.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.FunctionalPauliRotations.num_input_vars "qiskit.circuit.library.FunctionalPauliRotations.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.FunctionalPauliRotations.num_vars "qiskit.circuit.library.FunctionalPauliRotations.num_vars") + [`num_stretches()`](#qiskit.circuit.library.FunctionalPauliRotations.num_stretches "qiskit.circuit.library.FunctionalPauliRotations.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.FunctionalPauliRotations.num_captured_vars "qiskit.circuit.library.FunctionalPauliRotations.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - ### num\_state\_qubits @@ -327,186 +55,6 @@ python_api_name: qiskit.circuit.library.FunctionalPauliRotations The number of state qubits. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.FunctionalPauliRotations.duration "qiskit.circuit.library.FunctionalPauliRotations.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx index 84fc691f64b..0c4fcbba72c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx @@ -57,470 +57,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GMS.unit "qiskit.circuit.library.GMS.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GMS.num_input_vars "qiskit.circuit.library.GMS.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GMS.num_input_vars "qiskit.circuit.library.GMS.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GMS.num_vars "qiskit.circuit.library.GMS.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GMS.num_stretches "qiskit.circuit.library.GMS.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GMS.num_captured_vars "qiskit.circuit.library.GMS.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GMS.duration "qiskit.circuit.library.GMS.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx index cd3fc6aabb3..44261df1b6e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx @@ -47,470 +47,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GR.unit "qiskit.circuit.library.GR.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GR.num_input_vars "qiskit.circuit.library.GR.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GR.num_input_vars "qiskit.circuit.library.GR.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GR.num_vars "qiskit.circuit.library.GR.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GR.num_stretches "qiskit.circuit.library.GR.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GR.num_captured_vars "qiskit.circuit.library.GR.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GR.duration "qiskit.circuit.library.GR.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx index e0783f3091a..4629773d338 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx @@ -46,470 +46,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GRX.unit "qiskit.circuit.library.GRX.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GRX.num_input_vars "qiskit.circuit.library.GRX.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GRX.num_input_vars "qiskit.circuit.library.GRX.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GRX.num_vars "qiskit.circuit.library.GRX.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GRX.num_stretches "qiskit.circuit.library.GRX.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GRX.num_captured_vars "qiskit.circuit.library.GRX.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GRX.duration "qiskit.circuit.library.GRX.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx index 4c340a60928..4ddf9298e44 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx @@ -46,470 +46,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GRY.unit "qiskit.circuit.library.GRY.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GRY.num_input_vars "qiskit.circuit.library.GRY.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GRY.num_input_vars "qiskit.circuit.library.GRY.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GRY.num_vars "qiskit.circuit.library.GRY.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GRY.num_stretches "qiskit.circuit.library.GRY.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GRY.num_captured_vars "qiskit.circuit.library.GRY.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GRY.duration "qiskit.circuit.library.GRY.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx index 79d9ca3adbb..88c4a00aae0 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx @@ -46,470 +46,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GRZ.unit "qiskit.circuit.library.GRZ.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GRZ.num_input_vars "qiskit.circuit.library.GRZ.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GRZ.num_input_vars "qiskit.circuit.library.GRZ.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GRZ.num_vars "qiskit.circuit.library.GRZ.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GRZ.num_stretches "qiskit.circuit.library.GRZ.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GRZ.num_captured_vars "qiskit.circuit.library.GRZ.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GRZ.duration "qiskit.circuit.library.GRZ.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx index 653e3ad4942..c9dd88e8163 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx @@ -28,7 +28,7 @@ $$ **Parameters** - * **phase** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The value of phase it takes. + * **phase** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – The value of phase it takes. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") *| None*) – An optional label for the gate. ## Attributes diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx index 55c06216c80..93929118a0e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx @@ -55,470 +55,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GraphState.unit "qiskit.circuit.library.GraphState.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GraphState.num_input_vars "qiskit.circuit.library.GraphState.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GraphState.num_input_vars "qiskit.circuit.library.GraphState.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GraphState.num_vars "qiskit.circuit.library.GraphState.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GraphState.num_stretches "qiskit.circuit.library.GraphState.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GraphState.num_captured_vars "qiskit.circuit.library.GraphState.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GraphState.duration "qiskit.circuit.library.GraphState.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx index 3a36833dec0..2f5eaf4a0e9 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx @@ -170,466 +170,12 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.GroverOperator.unit "qiskit.circuit.library.GroverOperator.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GroverOperator.num_input_vars "qiskit.circuit.library.GroverOperator.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.GroverOperator.num_input_vars "qiskit.circuit.library.GroverOperator.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.GroverOperator.num_vars "qiskit.circuit.library.GroverOperator.num_vars") + [`num_stretches()`](#qiskit.circuit.library.GroverOperator.num_stretches "qiskit.circuit.library.GroverOperator.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.GroverOperator.num_captured_vars "qiskit.circuit.library.GroverOperator.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - ### oracle The oracle implementing a reflection about the bad state. - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### reflection\_qubits @@ -642,16 +188,6 @@ $$ The subcircuit implementing the A operator or Hadamards. - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.GroverOperator.duration "qiskit.circuit.library.GroverOperator.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### zero\_reflection diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx index d6786eb055e..c70b35611f3 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx @@ -67,490 +67,6 @@ python_api_name: qiskit.circuit.library.HRSCumulativeMultiplier ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.HRSCumulativeMultiplier.unit "qiskit.circuit.library.HRSCumulativeMultiplier.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.HRSCumulativeMultiplier.num_input_vars "qiskit.circuit.library.HRSCumulativeMultiplier.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.HRSCumulativeMultiplier.num_input_vars "qiskit.circuit.library.HRSCumulativeMultiplier.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.HRSCumulativeMultiplier.num_vars "qiskit.circuit.library.HRSCumulativeMultiplier.num_vars") + [`num_stretches()`](#qiskit.circuit.library.HRSCumulativeMultiplier.num_stretches "qiskit.circuit.library.HRSCumulativeMultiplier.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.HRSCumulativeMultiplier.num_captured_vars "qiskit.circuit.library.HRSCumulativeMultiplier.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_result\_qubits - - - The number of result qubits to limit the output to. - - **Returns** - - The number of result qubits. - - - ### num\_state\_qubits - - - The number of state qubits, i.e. the number of bits in each input register. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.HRSCumulativeMultiplier.duration "qiskit.circuit.library.HRSCumulativeMultiplier.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx index 9048b2c8cea..a2848d7777e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx @@ -57,470 +57,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.HiddenLinearFunction.unit "qiskit.circuit.library.HiddenLinearFunction.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.HiddenLinearFunction.num_input_vars "qiskit.circuit.library.HiddenLinearFunction.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.HiddenLinearFunction.num_input_vars "qiskit.circuit.library.HiddenLinearFunction.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.HiddenLinearFunction.num_vars "qiskit.circuit.library.HiddenLinearFunction.num_vars") + [`num_stretches()`](#qiskit.circuit.library.HiddenLinearFunction.num_stretches "qiskit.circuit.library.HiddenLinearFunction.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.HiddenLinearFunction.num_captured_vars "qiskit.circuit.library.HiddenLinearFunction.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.HiddenLinearFunction.duration "qiskit.circuit.library.HiddenLinearFunction.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx index fe82e898c16..9f5ea6a5982 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx @@ -45,470 +45,6 @@ python_api_name: qiskit.circuit.library.IQP ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.IQP.unit "qiskit.circuit.library.IQP.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.IQP.num_input_vars "qiskit.circuit.library.IQP.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.IQP.num_input_vars "qiskit.circuit.library.IQP.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.IQP.num_vars "qiskit.circuit.library.IQP.num_vars") + [`num_stretches()`](#qiskit.circuit.library.IQP.num_stretches "qiskit.circuit.library.IQP.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.IQP.num_captured_vars "qiskit.circuit.library.IQP.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.IQP.duration "qiskit.circuit.library.IQP.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx index 100169fb628..f3828d82c6a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx @@ -56,470 +56,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.InnerProduct.unit "qiskit.circuit.library.InnerProduct.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.InnerProduct.num_input_vars "qiskit.circuit.library.InnerProduct.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.InnerProduct.num_input_vars "qiskit.circuit.library.InnerProduct.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.InnerProduct.num_vars "qiskit.circuit.library.InnerProduct.num_vars") + [`num_stretches()`](#qiskit.circuit.library.InnerProduct.num_stretches "qiskit.circuit.library.InnerProduct.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.InnerProduct.num_captured_vars "qiskit.circuit.library.InnerProduct.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.InnerProduct.duration "qiskit.circuit.library.InnerProduct.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx index 5a212b3085c..dc88b1c2377 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx @@ -32,70 +32,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.IntegerComparator.unit "qiskit.circuit.library.IntegerComparator.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### geq @@ -106,214 +42,6 @@ $$ True, if the comparator compares `>=`, False if `<`. - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.IntegerComparator.num_input_vars "qiskit.circuit.library.IntegerComparator.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.IntegerComparator.num_input_vars "qiskit.circuit.library.IntegerComparator.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.IntegerComparator.num_vars "qiskit.circuit.library.IntegerComparator.num_vars") + [`num_stretches()`](#qiskit.circuit.library.IntegerComparator.num_stretches "qiskit.circuit.library.IntegerComparator.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.IntegerComparator.num_captured_vars "qiskit.circuit.library.IntegerComparator.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - ### num\_state\_qubits @@ -324,186 +52,6 @@ $$ The number of state qubits. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.IntegerComparator.duration "qiskit.circuit.library.IntegerComparator.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### value diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx index 1f147cd2855..c4dc7792435 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx @@ -71,470 +71,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.LinearAmplitudeFunction.unit "qiskit.circuit.library.LinearAmplitudeFunction.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.LinearAmplitudeFunction.num_input_vars "qiskit.circuit.library.LinearAmplitudeFunction.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.LinearAmplitudeFunction.num_input_vars "qiskit.circuit.library.LinearAmplitudeFunction.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.LinearAmplitudeFunction.num_vars "qiskit.circuit.library.LinearAmplitudeFunction.num_vars") + [`num_stretches()`](#qiskit.circuit.library.LinearAmplitudeFunction.num_stretches "qiskit.circuit.library.LinearAmplitudeFunction.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.LinearAmplitudeFunction.num_captured_vars "qiskit.circuit.library.LinearAmplitudeFunction.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.LinearAmplitudeFunction.duration "qiskit.circuit.library.LinearAmplitudeFunction.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx index 953e2f363ee..e2d56408538 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx @@ -46,326 +46,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### basis - - - The kind of Pauli rotation to be used. - - Set the basis to ‘X’, ‘Y’ or ‘Z’ for controlled-X, -Y, or -Z rotations respectively. - - **Returns** - - The kind of Pauli rotation used in controlled rotation. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.LinearPauliRotations.unit "qiskit.circuit.library.LinearPauliRotations.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancilla\_qubits - - - The minimum number of ancilla qubits in the circuit. - - **Returns** - - The minimal number of ancillas required. - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.LinearPauliRotations.num_input_vars "qiskit.circuit.library.LinearPauliRotations.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.LinearPauliRotations.num_input_vars "qiskit.circuit.library.LinearPauliRotations.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.LinearPauliRotations.num_vars "qiskit.circuit.library.LinearPauliRotations.num_vars") + [`num_stretches()`](#qiskit.circuit.library.LinearPauliRotations.num_stretches "qiskit.circuit.library.LinearPauliRotations.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.LinearPauliRotations.num_captured_vars "qiskit.circuit.library.LinearPauliRotations.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits representing the state $|x\rangle$. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - ### offset @@ -378,160 +58,6 @@ $$ The offset angle. - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### slope @@ -544,16 +70,6 @@ $$ The rotation angle common in all controlled rotations. - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.LinearPauliRotations.duration "qiskit.circuit.library.LinearPauliRotations.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx index a6e87724a92..988513a9411 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx @@ -49,476 +49,12 @@ python_api_name: qiskit.circuit.library.MCMT ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.MCMT.unit "qiskit.circuit.library.MCMT.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - ### num\_ancilla\_qubits Return the number of ancillas. - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.MCMT.num_input_vars "qiskit.circuit.library.MCMT.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.MCMT.num_input_vars "qiskit.circuit.library.MCMT.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.MCMT.num_vars "qiskit.circuit.library.MCMT.num_vars") + [`num_stretches()`](#qiskit.circuit.library.MCMT.num_stretches "qiskit.circuit.library.MCMT.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.MCMT.num_captured_vars "qiskit.circuit.library.MCMT.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.MCMT.duration "qiskit.circuit.library.MCMT.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx index e5beb7f0384..0b3cb6a5f72 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx @@ -66,476 +66,12 @@ python_api_name: qiskit.circuit.library.MCMTVChain * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – * **num\_target\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.MCMTVChain.unit "qiskit.circuit.library.MCMTVChain.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - ### num\_ancilla\_qubits Return the number of ancilla qubits required. - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.MCMTVChain.num_input_vars "qiskit.circuit.library.MCMTVChain.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.MCMTVChain.num_input_vars "qiskit.circuit.library.MCMTVChain.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.MCMTVChain.num_vars "qiskit.circuit.library.MCMTVChain.num_vars") + [`num_stretches()`](#qiskit.circuit.library.MCMTVChain.num_stretches "qiskit.circuit.library.MCMTVChain.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.MCMTVChain.num_captured_vars "qiskit.circuit.library.MCMTVChain.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.MCMTVChain.duration "qiskit.circuit.library.MCMTVChain.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx index 9a153468934..e83a4c872f6 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx @@ -17,7 +17,7 @@ python_api_name: qiskit.circuit.library.MCXGrayCode Create new MCX gate. - ## Attributes + ## Methods **Parameters** @@ -25,121 +25,6 @@ python_api_name: qiskit.circuit.library.MCXGrayCode * **label** (*Optional\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*]*) – * **ctrl\_state** (*Optional\[Union\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – - ### base\_class - - - Get the base class of this instruction. This is guaranteed to be in the inheritance tree of `self`. - - The “base class” of an instruction is the lowest class in its inheritance tree that the object should be considered entirely compatible with for \_all\_ circuit applications. This typically means that the subclass is defined purely to offer some sort of programmer convenience over the base class, and the base class is the “true” class for a behavioral perspective. In particular, you should *not* override [`base_class`](#qiskit.circuit.library.MCXGrayCode.base_class "qiskit.circuit.library.MCXGrayCode.base_class") if you are defining a custom version of an instruction that will be implemented differently by hardware, such as an alternative measurement strategy, or a version of a parametrized gate with a particular set of parameters for the purposes of distinguishing it in a [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") from the full parametrized gate. - - This is often exactly equivalent to `type(obj)`, except in the case of singleton instances of standard-library instructions. These singleton instances are special subclasses of their base class, and this property will return that base. For example: - - ```python - >>> isinstance(XGate(), XGate) - True - >>> type(XGate()) is XGate - False - >>> XGate().base_class is XGate - True - ``` - - In general, you should not rely on the precise class of an instruction; within a given circuit, it is expected that `Instruction.name` should be a more suitable discriminator in most situations. - - - ### ctrl\_state - - - Return the control state of the gate as a decimal integer. - - - ### decompositions - - - Get the decompositions of the instruction from the SessionEquivalenceLibrary. - - - ### definition - - - Return definition in terms of other basic gates. If the gate has open controls, as determined from [`ctrl_state`](#qiskit.circuit.library.MCXGrayCode.ctrl_state "qiskit.circuit.library.MCXGrayCode.ctrl_state"), the returned definition is conjugated with X without changing the internal `_definition`. - - - ### label - - - Return instruction label - - - ### mutable - - - Is this instance is a mutable unique instance or not. - - If this attribute is `False` the gate instance is a shared singleton and is not mutable. - - - ### name - - - Get name of gate. If the gate has open controls the gate name will become: - - > \ - - where \ is the gate name for the default case of closed control qubits and \ is the integer value of the control state for the gate. - - - ### num\_ancilla\_qubits - - - The number of ancilla qubits. - - - ### num\_clbits - - - Return the number of clbits. - - - ### num\_ctrl\_qubits - - - Get number of control qubits. - - **Returns** - - The number of control qubits for the gate. - - **Return type** - - [int](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") - - - ### num\_qubits - - - Return the number of qubits. - - - ### params - - - Get parameters from base\_gate. - - **Returns** - - List of gate parameters. - - **Return type** - - [list](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)") - - **Raises** - - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – Controlled gate does not define a base gate - - - ## Methods - ### inverse diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx index 7134e9b7bd3..f559b53a12c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx @@ -24,7 +24,7 @@ python_api_name: qiskit.circuit.library.MCXRecursive Create new MCX gate. - ## Attributes + ## Methods **Parameters** @@ -32,121 +32,6 @@ python_api_name: qiskit.circuit.library.MCXRecursive * **label** (*Optional\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*]*) – * **ctrl\_state** (*Optional\[Union\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – - ### base\_class - - - Get the base class of this instruction. This is guaranteed to be in the inheritance tree of `self`. - - The “base class” of an instruction is the lowest class in its inheritance tree that the object should be considered entirely compatible with for \_all\_ circuit applications. This typically means that the subclass is defined purely to offer some sort of programmer convenience over the base class, and the base class is the “true” class for a behavioral perspective. In particular, you should *not* override [`base_class`](#qiskit.circuit.library.MCXRecursive.base_class "qiskit.circuit.library.MCXRecursive.base_class") if you are defining a custom version of an instruction that will be implemented differently by hardware, such as an alternative measurement strategy, or a version of a parametrized gate with a particular set of parameters for the purposes of distinguishing it in a [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") from the full parametrized gate. - - This is often exactly equivalent to `type(obj)`, except in the case of singleton instances of standard-library instructions. These singleton instances are special subclasses of their base class, and this property will return that base. For example: - - ```python - >>> isinstance(XGate(), XGate) - True - >>> type(XGate()) is XGate - False - >>> XGate().base_class is XGate - True - ``` - - In general, you should not rely on the precise class of an instruction; within a given circuit, it is expected that `Instruction.name` should be a more suitable discriminator in most situations. - - - ### ctrl\_state - - - Return the control state of the gate as a decimal integer. - - - ### decompositions - - - Get the decompositions of the instruction from the SessionEquivalenceLibrary. - - - ### definition - - - Return definition in terms of other basic gates. If the gate has open controls, as determined from [`ctrl_state`](#qiskit.circuit.library.MCXRecursive.ctrl_state "qiskit.circuit.library.MCXRecursive.ctrl_state"), the returned definition is conjugated with X without changing the internal `_definition`. - - - ### label - - - Return instruction label - - - ### mutable - - - Is this instance is a mutable unique instance or not. - - If this attribute is `False` the gate instance is a shared singleton and is not mutable. - - - ### name - - - Get name of gate. If the gate has open controls the gate name will become: - - > \ - - where \ is the gate name for the default case of closed control qubits and \ is the integer value of the control state for the gate. - - - ### num\_ancilla\_qubits - - - The number of ancilla qubits. - - - ### num\_clbits - - - Return the number of clbits. - - - ### num\_ctrl\_qubits - - - Get number of control qubits. - - **Returns** - - The number of control qubits for the gate. - - **Return type** - - [int](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") - - - ### num\_qubits - - - Return the number of qubits. - - - ### params - - - Get parameters from base\_gate. - - **Returns** - - List of gate parameters. - - **Return type** - - [list](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)") - - **Raises** - - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – Controlled gate does not define a base gate - - - ## Methods - ### get\_num\_ancilla\_qubits diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx index 99d5942161e..230af85b12c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx @@ -22,121 +22,6 @@ python_api_name: qiskit.circuit.library.MCXVChain * **label** (*Optional\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*]*) – * **ctrl\_state** (*Optional\[Union\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*]]*) – - ## Attributes - - ### base\_class - - - Get the base class of this instruction. This is guaranteed to be in the inheritance tree of `self`. - - The “base class” of an instruction is the lowest class in its inheritance tree that the object should be considered entirely compatible with for \_all\_ circuit applications. This typically means that the subclass is defined purely to offer some sort of programmer convenience over the base class, and the base class is the “true” class for a behavioral perspective. In particular, you should *not* override [`base_class`](#qiskit.circuit.library.MCXVChain.base_class "qiskit.circuit.library.MCXVChain.base_class") if you are defining a custom version of an instruction that will be implemented differently by hardware, such as an alternative measurement strategy, or a version of a parametrized gate with a particular set of parameters for the purposes of distinguishing it in a [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") from the full parametrized gate. - - This is often exactly equivalent to `type(obj)`, except in the case of singleton instances of standard-library instructions. These singleton instances are special subclasses of their base class, and this property will return that base. For example: - - ```python - >>> isinstance(XGate(), XGate) - True - >>> type(XGate()) is XGate - False - >>> XGate().base_class is XGate - True - ``` - - In general, you should not rely on the precise class of an instruction; within a given circuit, it is expected that `Instruction.name` should be a more suitable discriminator in most situations. - - - ### ctrl\_state - - - Return the control state of the gate as a decimal integer. - - - ### decompositions - - - Get the decompositions of the instruction from the SessionEquivalenceLibrary. - - - ### definition - - - Return definition in terms of other basic gates. If the gate has open controls, as determined from [`ctrl_state`](#qiskit.circuit.library.MCXVChain.ctrl_state "qiskit.circuit.library.MCXVChain.ctrl_state"), the returned definition is conjugated with X without changing the internal `_definition`. - - - ### label - - - Return instruction label - - - ### mutable - - - Is this instance is a mutable unique instance or not. - - If this attribute is `False` the gate instance is a shared singleton and is not mutable. - - - ### name - - - Get name of gate. If the gate has open controls the gate name will become: - - > \ - - where \ is the gate name for the default case of closed control qubits and \ is the integer value of the control state for the gate. - - - ### num\_ancilla\_qubits - - - The number of ancilla qubits. - - - ### num\_clbits - - - Return the number of clbits. - - - ### num\_ctrl\_qubits - - - Get number of control qubits. - - **Returns** - - The number of control qubits for the gate. - - **Return type** - - [int](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") - - - ### num\_qubits - - - Return the number of qubits. - - - ### params - - - Get parameters from base\_gate. - - **Returns** - - List of gate parameters. - - **Return type** - - [list](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)") - - **Raises** - - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – Controlled gate does not define a base gate - - ## Methods ### get\_num\_ancilla\_qubits diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx index e936d31198a..09ab12f24e1 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx @@ -70,70 +70,6 @@ python_api_name: qiskit.circuit.library.NLocal ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.NLocal.unit "qiskit.circuit.library.NLocal.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### entanglement @@ -160,38 +96,6 @@ python_api_name: qiskit.circuit.library.NLocal Returns whether the circuit is wrapped in nested gates/instructions or flattened. - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - ### initial\_state @@ -212,170 +116,6 @@ python_api_name: qiskit.circuit.library.NLocal `True`, if barriers are inserted in between the layers, `False` if not. - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.NLocal.num_input_vars "qiskit.circuit.library.NLocal.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.NLocal.num_input_vars "qiskit.circuit.library.NLocal.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.NLocal.num_vars "qiskit.circuit.library.NLocal.num_vars") + [`num_stretches()`](#qiskit.circuit.library.NLocal.num_stretches "qiskit.circuit.library.NLocal.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.NLocal.num_captured_vars "qiskit.circuit.library.NLocal.num_captured_vars") must be zero. - - ### num\_layers @@ -386,12 +126,6 @@ python_api_name: qiskit.circuit.library.NLocal The number of layers in the circuit. - ### num\_parameters - - - The number of parameter objects in the circuit. - - ### num\_parameters\_settable @@ -418,102 +152,6 @@ python_api_name: qiskit.circuit.library.NLocal The number of qubits. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - ### ordered\_parameters @@ -550,64 +188,6 @@ python_api_name: qiskit.circuit.library.NLocal A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - ### preferred\_init\_points @@ -618,22 +198,6 @@ python_api_name: qiskit.circuit.library.NLocal The initial values for the parameters, or None, if none have been set. - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### reps @@ -654,16 +218,6 @@ python_api_name: qiskit.circuit.library.NLocal The blocks in the rotation layers. - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.NLocal.duration "qiskit.circuit.library.NLocal.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx index 5e20b9543ae..f14c0d5a1ac 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx @@ -37,470 +37,6 @@ python_api_name: qiskit.circuit.library.OR ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.OR.unit "qiskit.circuit.library.OR.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.OR.num_input_vars "qiskit.circuit.library.OR.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.OR.num_input_vars "qiskit.circuit.library.OR.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.OR.num_vars "qiskit.circuit.library.OR.num_vars") + [`num_stretches()`](#qiskit.circuit.library.OR.num_stretches "qiskit.circuit.library.OR.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.OR.num_captured_vars "qiskit.circuit.library.OR.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.OR.duration "qiskit.circuit.library.OR.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx index 67a0019f138..106f3447fd5 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx @@ -396,11 +396,11 @@ $$ **Parameters** - **parameter** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – + **parameter** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – **Return type** - [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") + [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") | [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)") diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx index dad29e65872..398020a24ec 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx @@ -126,80 +126,6 @@ $$ The Pauli rotation factor. - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PauliFeatureMap.unit "qiskit.circuit.library.PauliFeatureMap.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see [`get_entangler_map()`](#qiskit.circuit.library.PauliFeatureMap.get_entangler_map "qiskit.circuit.library.PauliFeatureMap.get_entangler_map") for more detail on how the format is interpreted. - - ### entanglement\_blocks @@ -220,450 +146,12 @@ $$ The feature dimension of this feature map. - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PauliFeatureMap.num_input_vars "qiskit.circuit.library.PauliFeatureMap.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PauliFeatureMap.num_input_vars "qiskit.circuit.library.PauliFeatureMap.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PauliFeatureMap.num_vars "qiskit.circuit.library.PauliFeatureMap.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PauliFeatureMap.num_stretches "qiskit.circuit.library.PauliFeatureMap.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PauliFeatureMap.num_captured_vars "qiskit.circuit.library.PauliFeatureMap.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - ### num\_parameters\_settable The number of distinct parameters. - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - - ### parameter\_bounds - - - The parameter bounds for the unbound parameters in the circuit. - - **Returns** - - A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - ### paulis @@ -674,62 +162,6 @@ $$ The Pauli strings as list. - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PauliFeatureMap.duration "qiskit.circuit.library.PauliFeatureMap.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx index a8d1a77245d..c9558f8c31f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx @@ -69,328 +69,6 @@ python_api_name: qiskit.circuit.library.PauliTwoDesign ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PauliTwoDesign.unit "qiskit.circuit.library.PauliTwoDesign.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PauliTwoDesign.num_input_vars "qiskit.circuit.library.PauliTwoDesign.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PauliTwoDesign.num_input_vars "qiskit.circuit.library.PauliTwoDesign.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PauliTwoDesign.num_vars "qiskit.circuit.library.PauliTwoDesign.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PauliTwoDesign.num_stretches "qiskit.circuit.library.PauliTwoDesign.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PauliTwoDesign.num_captured_vars "qiskit.circuit.library.PauliTwoDesign.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - ### num\_parameters\_settable @@ -401,262 +79,6 @@ python_api_name: qiskit.circuit.library.PauliTwoDesign The number of possibly distinct parameters. - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - - ### parameter\_bounds - - - The parameter bounds for the unbound parameters in the circuit. - - **Returns** - - A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PauliTwoDesign.duration "qiskit.circuit.library.PauliTwoDesign.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx index 7355d157e7c..39ae2848eac 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx @@ -39,470 +39,6 @@ python_api_name: qiskit.circuit.library.Permutation ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.Permutation.unit "qiskit.circuit.library.Permutation.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.Permutation.num_input_vars "qiskit.circuit.library.Permutation.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.Permutation.num_input_vars "qiskit.circuit.library.Permutation.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.Permutation.num_vars "qiskit.circuit.library.Permutation.num_vars") + [`num_stretches()`](#qiskit.circuit.library.Permutation.num_stretches "qiskit.circuit.library.Permutation.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.Permutation.num_captured_vars "qiskit.circuit.library.Permutation.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.Permutation.duration "qiskit.circuit.library.Permutation.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx index 4afb3afbcff..8f85c9985a0 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx @@ -56,470 +56,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PhaseEstimation.unit "qiskit.circuit.library.PhaseEstimation.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PhaseEstimation.num_input_vars "qiskit.circuit.library.PhaseEstimation.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PhaseEstimation.num_input_vars "qiskit.circuit.library.PhaseEstimation.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PhaseEstimation.num_vars "qiskit.circuit.library.PhaseEstimation.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PhaseEstimation.num_stretches "qiskit.circuit.library.PhaseEstimation.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PhaseEstimation.num_captured_vars "qiskit.circuit.library.PhaseEstimation.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PhaseEstimation.duration "qiskit.circuit.library.PhaseEstimation.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx index 2103c73670e..e0e267ddec7 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx @@ -36,470 +36,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PhaseOracle.unit "qiskit.circuit.library.PhaseOracle.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PhaseOracle.num_input_vars "qiskit.circuit.library.PhaseOracle.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PhaseOracle.num_input_vars "qiskit.circuit.library.PhaseOracle.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PhaseOracle.num_vars "qiskit.circuit.library.PhaseOracle.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PhaseOracle.num_stretches "qiskit.circuit.library.PhaseOracle.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PhaseOracle.num_captured_vars "qiskit.circuit.library.PhaseOracle.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PhaseOracle.duration "qiskit.circuit.library.PhaseOracle.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx index 822f77bc68d..e06280ca55b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx @@ -54,12 +54,6 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - ### breakpoints @@ -70,54 +64,6 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev The breakpoints for the piecewise approximation. - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - ### degree @@ -128,16 +74,6 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev The degree of the polynomials. - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PiecewiseChebyshev.unit "qiskit.circuit.library.PiecewiseChebyshev.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### f\_x @@ -148,214 +84,6 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev The function to be approximated. - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PiecewiseChebyshev.num_input_vars "qiskit.circuit.library.PiecewiseChebyshev.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PiecewiseChebyshev.num_input_vars "qiskit.circuit.library.PiecewiseChebyshev.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PiecewiseChebyshev.num_vars "qiskit.circuit.library.PiecewiseChebyshev.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PiecewiseChebyshev.num_stretches "qiskit.circuit.library.PiecewiseChebyshev.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PiecewiseChebyshev.num_captured_vars "qiskit.circuit.library.PiecewiseChebyshev.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - ### num\_state\_qubits @@ -366,160 +94,6 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev The number of state qubits. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - ### polynomials @@ -534,32 +108,6 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev [**TypeError**](https://docs.python.org/3/library/exceptions.html#TypeError "(in Python v3.13)") – If the input function is not in the correct format. - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PiecewiseChebyshev.duration "qiskit.circuit.library.PiecewiseChebyshev.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx index 7d36624ec8e..24de90c47c7 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx @@ -37,24 +37,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### basis - - - The kind of Pauli rotation to be used. - - Set the basis to ‘X’, ‘Y’ or ‘Z’ for controlled-X, -Y, or -Z rotations respectively. - - **Returns** - - The kind of Pauli rotation used in controlled rotation. - - ### breakpoints @@ -63,34 +45,6 @@ $$ The function is linear in the intervals `[point_i, point_{i+1}]` where the last point implicitly is `2**(num_state_qubits + 1)`. - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - ### contains\_zero\_breakpoint @@ -101,116 +55,6 @@ $$ True, if 0 is the first breakpoint, otherwise False. - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.unit "qiskit.circuit.library.PiecewiseLinearPauliRotations.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - ### mapped\_offsets @@ -231,170 +75,6 @@ $$ The mapped slopes. - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancilla\_qubits - - - The minimum number of ancilla qubits in the circuit. - - **Returns** - - The minimal number of ancillas required. - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.num_input_vars "qiskit.circuit.library.PiecewiseLinearPauliRotations.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.num_input_vars "qiskit.circuit.library.PiecewiseLinearPauliRotations.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.num_vars "qiskit.circuit.library.PiecewiseLinearPauliRotations.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.num_stretches "qiskit.circuit.library.PiecewiseLinearPauliRotations.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.num_captured_vars "qiskit.circuit.library.PiecewiseLinearPauliRotations.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits representing the state $|x\rangle$. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - ### offsets @@ -403,160 +83,6 @@ $$ The function is linear in the intervals `[point_i, point_{i+1}]` where the last point implicitly is `2**(num_state_qubits + 1)`. - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### slopes @@ -565,16 +91,6 @@ $$ The function is linear in the intervals `[point_i, point_{i+1}]` where the last point implicitly is `2**(num_state_qubits + 1)`. - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PiecewiseLinearPauliRotations.duration "qiskit.circuit.library.PiecewiseLinearPauliRotations.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx index bcfa8a35114..787d5d68e14 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx @@ -83,24 +83,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### basis - - - The kind of Pauli rotation to be used. - - Set the basis to ‘X’, ‘Y’ or ‘Z’ for controlled-X, -Y, or -Z rotations respectively. - - **Returns** - - The kind of Pauli rotation used in controlled rotation. - - ### breakpoints @@ -113,34 +95,6 @@ $$ The list of breakpoints. - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - ### coeffs @@ -161,116 +115,6 @@ $$ True, if 0 is the first breakpoint, otherwise False. - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.unit "qiskit.circuit.library.PiecewisePolynomialPauliRotations.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - ### mapped\_coeffs @@ -281,334 +125,6 @@ $$ The mapped coefficients. - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancilla\_qubits - - - The minimum number of ancilla qubits in the circuit. - - **Returns** - - The minimal number of ancillas required. - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_input_vars "qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_input_vars "qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_vars "qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_stretches "qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_captured_vars "qiskit.circuit.library.PiecewisePolynomialPauliRotations.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits representing the state $|x\rangle$. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PiecewisePolynomialPauliRotations.duration "qiskit.circuit.library.PiecewisePolynomialPauliRotations.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx index d4e22d3303d..01d4b44929a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx @@ -45,52 +45,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### basis - - - The kind of Pauli rotation to be used. - - Set the basis to ‘X’, ‘Y’ or ‘Z’ for controlled-X, -Y, or -Z rotations respectively. - - **Returns** - - The kind of Pauli rotation used in controlled rotation. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - ### coeffs @@ -109,26 +63,6 @@ $$ The coefficients of the polynomial. - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - ### degree @@ -139,424 +73,6 @@ $$ The degree of the polynomial. If the coefficients have not been set, return 0. - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.PolynomialPauliRotations.unit "qiskit.circuit.library.PolynomialPauliRotations.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancilla\_qubits - - - The minimum number of ancilla qubits in the circuit. - - **Returns** - - The minimal number of ancillas required. - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PolynomialPauliRotations.num_input_vars "qiskit.circuit.library.PolynomialPauliRotations.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.PolynomialPauliRotations.num_input_vars "qiskit.circuit.library.PolynomialPauliRotations.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.PolynomialPauliRotations.num_vars "qiskit.circuit.library.PolynomialPauliRotations.num_vars") + [`num_stretches()`](#qiskit.circuit.library.PolynomialPauliRotations.num_stretches "qiskit.circuit.library.PolynomialPauliRotations.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.PolynomialPauliRotations.num_captured_vars "qiskit.circuit.library.PolynomialPauliRotations.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits representing the state $|x\rangle$. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.PolynomialPauliRotations.duration "qiskit.circuit.library.PolynomialPauliRotations.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx index bca79c21d6c..3eec7352e1d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx @@ -30,40 +30,6 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - ### cost\_operator @@ -78,194 +44,12 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz BaseOperator or OperatorBase - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.QAOAAnsatz.unit "qiskit.circuit.library.QAOAAnsatz.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### evolution - - - The evolution converter used to compute the evolution. - - **Returns** - - The evolution converter used to compute the evolution. - - **Return type** - - [EvolutionSynthesis](qiskit.synthesis.EvolutionSynthesis "qiskit.synthesis.EvolutionSynthesis") - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - ### initial\_state Returns an optional initial state as a circuit - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - ### mixer\_operator @@ -280,232 +64,10 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz BaseOperator or OperatorBase or [QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"), optional - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QAOAAnsatz.num_input_vars "qiskit.circuit.library.QAOAAnsatz.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QAOAAnsatz.num_input_vars "qiskit.circuit.library.QAOAAnsatz.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.QAOAAnsatz.num_vars "qiskit.circuit.library.QAOAAnsatz.num_vars") + [`num_stretches()`](#qiskit.circuit.library.QAOAAnsatz.num_stretches "qiskit.circuit.library.QAOAAnsatz.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.QAOAAnsatz.num_captured_vars "qiskit.circuit.library.QAOAAnsatz.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of total parameters that can be set to distinct values. - - This does not change when the parameters are bound or exchanged for same parameters, and therefore is different from `num_parameters` which counts the number of unique [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects currently in the circuit. - - **Returns** - - The number of parameters originally available in the circuit. - - - This quantity does not require the circuit to be built yet. - - - ### num\_qubits - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - ### operators @@ -522,32 +84,6 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz List\[Union\[BaseOperator, OperatorBase, [QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")]] - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - ### parameter\_bounds @@ -558,112 +94,12 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If None is returned, problem is fully unbounded. - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### preferred\_init\_points - - - Getter of preferred initial points based on the given initial state. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### reps Returns the reps parameter, which determines the depth of the circuit. - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.QAOAAnsatz.duration "qiskit.circuit.library.QAOAAnsatz.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx index 165038f1b72..eec5d96c198 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx @@ -52,12 +52,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - ### approximation\_degree @@ -68,54 +62,6 @@ $$ The currently set approximation degree. - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - ### do\_swaps @@ -126,48 +72,6 @@ $$ True, if the final swaps are applied, False if not. - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.QFT.unit "qiskit.circuit.library.QFT.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - ### insert\_barriers @@ -178,176 +82,6 @@ $$ True, if barriers are inserted, False if not. - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QFT.num_input_vars "qiskit.circuit.library.QFT.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QFT.num_input_vars "qiskit.circuit.library.QFT.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.QFT.num_vars "qiskit.circuit.library.QFT.num_vars") + [`num_stretches()`](#qiskit.circuit.library.QFT.num_stretches "qiskit.circuit.library.QFT.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.QFT.num_captured_vars "qiskit.circuit.library.QFT.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - ### num\_qubits @@ -358,186 +92,6 @@ $$ The number of qubits in the circuit. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.QFT.duration "qiskit.circuit.library.QFT.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx index fbe73d81371..cee3082e276 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx @@ -58,470 +58,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.QuadraticForm.unit "qiskit.circuit.library.QuadraticForm.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QuadraticForm.num_input_vars "qiskit.circuit.library.QuadraticForm.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QuadraticForm.num_input_vars "qiskit.circuit.library.QuadraticForm.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.QuadraticForm.num_vars "qiskit.circuit.library.QuadraticForm.num_vars") + [`num_stretches()`](#qiskit.circuit.library.QuadraticForm.num_stretches "qiskit.circuit.library.QuadraticForm.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.QuadraticForm.num_captured_vars "qiskit.circuit.library.QuadraticForm.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.QuadraticForm.duration "qiskit.circuit.library.QuadraticForm.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx index 13e5b8f0e29..4303ada6187 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx @@ -45,470 +45,6 @@ python_api_name: qiskit.circuit.library.QuantumVolume ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.QuantumVolume.unit "qiskit.circuit.library.QuantumVolume.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QuantumVolume.num_input_vars "qiskit.circuit.library.QuantumVolume.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.QuantumVolume.num_input_vars "qiskit.circuit.library.QuantumVolume.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.QuantumVolume.num_vars "qiskit.circuit.library.QuantumVolume.num_vars") + [`num_stretches()`](#qiskit.circuit.library.QuantumVolume.num_stretches "qiskit.circuit.library.QuantumVolume.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.QuantumVolume.num_captured_vars "qiskit.circuit.library.QuantumVolume.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.QuantumVolume.duration "qiskit.circuit.library.QuantumVolume.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx index c8bbad81a82..071473472ed 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx @@ -46,490 +46,6 @@ python_api_name: qiskit.circuit.library.RGQFTMultiplier ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.RGQFTMultiplier.unit "qiskit.circuit.library.RGQFTMultiplier.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.RGQFTMultiplier.num_input_vars "qiskit.circuit.library.RGQFTMultiplier.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.RGQFTMultiplier.num_input_vars "qiskit.circuit.library.RGQFTMultiplier.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.RGQFTMultiplier.num_vars "qiskit.circuit.library.RGQFTMultiplier.num_vars") + [`num_stretches()`](#qiskit.circuit.library.RGQFTMultiplier.num_stretches "qiskit.circuit.library.RGQFTMultiplier.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.RGQFTMultiplier.num_captured_vars "qiskit.circuit.library.RGQFTMultiplier.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_result\_qubits - - - The number of result qubits to limit the output to. - - **Returns** - - The number of result qubits. - - - ### num\_state\_qubits - - - The number of state qubits, i.e. the number of bits in each input register. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.RGQFTMultiplier.duration "qiskit.circuit.library.RGQFTMultiplier.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx index 31b414ef084..e9d94c9176b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx @@ -41,8 +41,8 @@ $$ **Parameters** - * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – - * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – + * **theta** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – + * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") *| None*) – ### base\_class diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx index df4773a2304..53afcb827d0 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx @@ -125,476 +125,6 @@ python_api_name: qiskit.circuit.library.RealAmplitudes ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.RealAmplitudes.unit "qiskit.circuit.library.RealAmplitudes.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.RealAmplitudes.num_input_vars "qiskit.circuit.library.RealAmplitudes.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.RealAmplitudes.num_input_vars "qiskit.circuit.library.RealAmplitudes.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.RealAmplitudes.num_vars "qiskit.circuit.library.RealAmplitudes.num_vars") + [`num_stretches()`](#qiskit.circuit.library.RealAmplitudes.num_stretches "qiskit.circuit.library.RealAmplitudes.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.RealAmplitudes.num_captured_vars "qiskit.circuit.library.RealAmplitudes.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of total parameters that can be set to distinct values. - - This does not change when the parameters are bound or exchanged for same parameters, and therefore is different from `num_parameters` which counts the number of unique [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects currently in the circuit. - - **Returns** - - The number of parameters originally available in the circuit. - - - This quantity does not require the circuit to be built yet. - - - - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - ### parameter\_bounds @@ -605,120 +135,6 @@ python_api_name: qiskit.circuit.library.RealAmplitudes The parameter bounds. - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.RealAmplitudes.duration "qiskit.circuit.library.RealAmplitudes.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx index 86876c87423..3060ea33d1c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx @@ -132,600 +132,6 @@ python_api_name: qiskit.circuit.library.TwoLocal ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.TwoLocal.unit "qiskit.circuit.library.TwoLocal.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see [`get_entangler_map()`](#qiskit.circuit.library.TwoLocal.get_entangler_map "qiskit.circuit.library.TwoLocal.get_entangler_map") for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.TwoLocal.num_input_vars "qiskit.circuit.library.TwoLocal.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.TwoLocal.num_input_vars "qiskit.circuit.library.TwoLocal.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.TwoLocal.num_vars "qiskit.circuit.library.TwoLocal.num_vars") + [`num_stretches()`](#qiskit.circuit.library.TwoLocal.num_stretches "qiskit.circuit.library.TwoLocal.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.TwoLocal.num_captured_vars "qiskit.circuit.library.TwoLocal.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of total parameters that can be set to distinct values. - - This does not change when the parameters are bound or exchanged for same parameters, and therefore is different from `num_parameters` which counts the number of unique [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects currently in the circuit. - - **Returns** - - The number of parameters originally available in the circuit. - - - This quantity does not require the circuit to be built yet. - - - - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - - ### parameter\_bounds - - - The parameter bounds for the unbound parameters in the circuit. - - **Returns** - - A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.TwoLocal.duration "qiskit.circuit.library.TwoLocal.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx index 610a66e814d..66f903af11d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx @@ -77,8 +77,8 @@ $$ **Parameters** - * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – - * **lam** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – + * **phi** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – + * **lam** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit._accelerate.circuit.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") *| None*) – ### base\_class diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx index 109cfa73efa..a530ce3352c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx @@ -65,470 +65,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.UnitaryOverlap.unit "qiskit.circuit.library.UnitaryOverlap.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.UnitaryOverlap.num_input_vars "qiskit.circuit.library.UnitaryOverlap.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.UnitaryOverlap.num_input_vars "qiskit.circuit.library.UnitaryOverlap.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.UnitaryOverlap.num_vars "qiskit.circuit.library.UnitaryOverlap.num_vars") + [`num_stretches()`](#qiskit.circuit.library.UnitaryOverlap.num_stretches "qiskit.circuit.library.UnitaryOverlap.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.UnitaryOverlap.num_captured_vars "qiskit.circuit.library.UnitaryOverlap.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.UnitaryOverlap.duration "qiskit.circuit.library.UnitaryOverlap.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx index 0f64025cb97..013b971df1a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx @@ -67,480 +67,6 @@ python_api_name: qiskit.circuit.library.VBERippleCarryAdder ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.VBERippleCarryAdder.unit "qiskit.circuit.library.VBERippleCarryAdder.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.VBERippleCarryAdder.num_input_vars "qiskit.circuit.library.VBERippleCarryAdder.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.VBERippleCarryAdder.num_input_vars "qiskit.circuit.library.VBERippleCarryAdder.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.VBERippleCarryAdder.num_vars "qiskit.circuit.library.VBERippleCarryAdder.num_vars") + [`num_stretches()`](#qiskit.circuit.library.VBERippleCarryAdder.num_stretches "qiskit.circuit.library.VBERippleCarryAdder.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.VBERippleCarryAdder.num_captured_vars "qiskit.circuit.library.VBERippleCarryAdder.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_state\_qubits - - - The number of state qubits, i.e. the number of bits in each input register. - - **Returns** - - The number of state qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.VBERippleCarryAdder.duration "qiskit.circuit.library.VBERippleCarryAdder.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx index 0d99b8dbbc5..c0453165710 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx @@ -64,214 +64,6 @@ $$ ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.WeightedAdder.unit "qiskit.circuit.library.WeightedAdder.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.WeightedAdder.num_input_vars "qiskit.circuit.library.WeightedAdder.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.WeightedAdder.num_input_vars "qiskit.circuit.library.WeightedAdder.num_input_vars") must be zero. - - ### num\_carry\_qubits @@ -284,26 +76,6 @@ $$ The number of carry qubits required to compute the sum. - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - ### num\_control\_qubits @@ -316,50 +88,6 @@ $$ The number of additional control qubits required (0 or 1). - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.WeightedAdder.num_vars "qiskit.circuit.library.WeightedAdder.num_vars") + [`num_stretches()`](#qiskit.circuit.library.WeightedAdder.num_stretches "qiskit.circuit.library.WeightedAdder.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.WeightedAdder.num_captured_vars "qiskit.circuit.library.WeightedAdder.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - ### num\_state\_qubits @@ -370,14 +98,6 @@ $$ The number of state qubits. - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - ### num\_sum\_qubits @@ -388,178 +108,6 @@ $$ The number of qubits needed to represent the weighted sum of the qubits. - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.WeightedAdder.duration "qiskit.circuit.library.WeightedAdder.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### weights diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx index 608e7aae2b9..c3fe93a079a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx @@ -39,470 +39,6 @@ python_api_name: qiskit.circuit.library.XOR ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.XOR.unit "qiskit.circuit.library.XOR.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.XOR.num_input_vars "qiskit.circuit.library.XOR.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.XOR.num_input_vars "qiskit.circuit.library.XOR.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.XOR.num_vars "qiskit.circuit.library.XOR.num_vars") + [`num_stretches()`](#qiskit.circuit.library.XOR.num_stretches "qiskit.circuit.library.XOR.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.XOR.num_captured_vars "qiskit.circuit.library.XOR.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.XOR.duration "qiskit.circuit.library.XOR.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx index b7621635d43..ffd8f9eba3f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx @@ -85,620 +85,6 @@ python_api_name: qiskit.circuit.library.ZFeatureMap ## Attributes - ### alpha - - - The Pauli rotation factor (alpha). - - **Returns** - - The Pauli rotation factor. - - - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.ZFeatureMap.unit "qiskit.circuit.library.ZFeatureMap.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### feature\_dimension - - - Returns the feature dimension (which is equal to the number of qubits). - - **Returns** - - The feature dimension of this feature map. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ZFeatureMap.num_input_vars "qiskit.circuit.library.ZFeatureMap.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ZFeatureMap.num_input_vars "qiskit.circuit.library.ZFeatureMap.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.ZFeatureMap.num_vars "qiskit.circuit.library.ZFeatureMap.num_vars") + [`num_stretches()`](#qiskit.circuit.library.ZFeatureMap.num_stretches "qiskit.circuit.library.ZFeatureMap.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.ZFeatureMap.num_captured_vars "qiskit.circuit.library.ZFeatureMap.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of distinct parameters. - - - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - - ### parameter\_bounds - - - The parameter bounds for the unbound parameters in the circuit. - - **Returns** - - A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### paulis - - - The Pauli strings used in the entanglement of the qubits. - - **Returns** - - The Pauli strings as list. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.ZFeatureMap.duration "qiskit.circuit.library.ZFeatureMap.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx index 00db8e3c74e..5195f098140 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx @@ -106,620 +106,6 @@ python_api_name: qiskit.circuit.library.ZZFeatureMap ## Attributes - ### alpha - - - The Pauli rotation factor (alpha). - - **Returns** - - The Pauli rotation factor. - - - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Returns** - - a list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")s for each instruction. - - **Return type** - - QuantumCircuitData - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.circuit.library.ZZFeatureMap.unit "qiskit.circuit.library.ZZFeatureMap.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### entanglement - - - Get the entanglement strategy. - - **Returns** - - The entanglement strategy, see `get_entangler_map()` for more detail on how the format is interpreted. - - - ### entanglement\_blocks - - - The blocks in the entanglement layers. - - **Returns** - - The blocks in the entanglement layers. - - - ### feature\_dimension - - - Returns the feature dimension (which is equal to the number of qubits). - - **Returns** - - The feature dimension of this feature map. - - - ### flatten - - - Returns whether the circuit is wrapped in nested gates/instructions or flattened. - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### initial\_state - - - Return the initial state that is added in front of the n-local circuit. - - **Returns** - - The initial state. - - - ### insert\_barriers - - - If barriers are inserted in between the layers or not. - - **Returns** - - `True`, if barriers are inserted in between the layers, `False` if not. - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ZZFeatureMap.num_input_vars "qiskit.circuit.library.ZZFeatureMap.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.circuit.library.ZZFeatureMap.num_input_vars "qiskit.circuit.library.ZZFeatureMap.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.circuit.library.ZZFeatureMap.num_vars "qiskit.circuit.library.ZZFeatureMap.num_vars") + [`num_stretches()`](#qiskit.circuit.library.ZZFeatureMap.num_stretches "qiskit.circuit.library.ZZFeatureMap.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.circuit.library.ZZFeatureMap.num_captured_vars "qiskit.circuit.library.ZZFeatureMap.num_captured_vars") must be zero. - - - ### num\_layers - - - Return the number of layers in the n-local circuit. - - **Returns** - - The number of layers in the circuit. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_parameters\_settable - - - The number of distinct parameters. - - - ### num\_qubits - - - Returns the number of qubits in this circuit. - - **Returns** - - The number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### ordered\_parameters - - - The parameters used in the underlying circuit. - - This includes float values and duplicates. - - **Examples** - - ```python - >>> # prepare circuit ... - >>> print(nlocal) - ┌───────┐┌──────────┐┌──────────┐┌──────────┐ - q_0: ┤ Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3]) ├ - └───────┘└──────────┘└──────────┘└──────────┘ - >>> nlocal.parameters - {Parameter(θ[1]), Parameter(θ[3])} - >>> nlocal.ordered_parameters - [1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])] - ``` - - **Returns** - - The parameters objects used in the circuit. - - - ### parameter\_bounds - - - The parameter bounds for the unbound parameters in the circuit. - - **Returns** - - A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If `None` is returned, problem is fully unbounded. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### paulis - - - The Pauli strings used in the entanglement of the qubits. - - **Returns** - - The Pauli strings as list. - - - ### preferred\_init\_points - - - The initial points for the parameters. Can be stored as initial guess in optimization. - - **Returns** - - The initial values for the parameters, or None, if none have been set. - - - ### prefix - - - - ### qregs - - - A list of the quantum registers associated with the circuit. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### reps - - - The number of times rotation and entanglement block are repeated. - - **Returns** - - The number of repetitions. - - - ### rotation\_blocks - - - The blocks in the rotation layers. - - **Returns** - - The blocks in the rotation layers. - - - ### unit - - - The unit that [`duration`](#qiskit.circuit.library.ZZFeatureMap.duration "qiskit.circuit.library.ZZFeatureMap.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.passmanager.BasePassManager.mdx b/docs/api/qiskit/dev/qiskit.passmanager.BasePassManager.mdx index cf1a04e4a73..4de26e62585 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.BasePassManager.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.BasePassManager.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.BasePassManager # BasePassManager - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.13)") Pass manager base class. @@ -80,7 +80,7 @@ python_api_name: qiskit.passmanager.BasePassManager ### run - + Run all the passes on the specified `in_programs`. **Parameters** @@ -130,7 +130,7 @@ python_api_name: qiskit.passmanager.BasePassManager ### to\_flow\_controller - + Linearize this manager into a single [`FlowControllerLinear`](qiskit.passmanager.FlowControllerLinear "qiskit.passmanager.FlowControllerLinear"), so that it can be nested inside another pass manager. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximateCircuit.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximateCircuit.mdx index b1371e8de29..e339a3c7520 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximateCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximateCircuit.mdx @@ -20,460 +20,6 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximateCircuit ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.unit "qiskit.synthesis.unitary.aqc.ApproximateCircuit.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_input_vars "qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_input_vars "qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_vars "qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_vars") + [`num_stretches()`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_stretches "qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_captured_vars "qiskit.synthesis.unitary.aqc.ApproximateCircuit.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### thetas @@ -484,16 +30,6 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximateCircuit a vector of parameters of this circuit. - ### unit - - - The unit that [`duration`](#qiskit.synthesis.unitary.aqc.ApproximateCircuit.duration "qiskit.synthesis.unitary.aqc.ApproximateCircuit.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.mdx index 6eb31007d0e..14e685a369b 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.mdx @@ -26,460 +26,6 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitCircuit ## Attributes - ### ancillas - - - A list of `AncillaQubit`s in the order that they were added. You should not mutate this. - - - ### clbits - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - **Example** - - ```python - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - qr1 = QuantumRegister(2) - qr2 = QuantumRegister(1) - cr1 = ClassicalRegister(2) - cr2 = ClassicalRegister(1) - qc = QuantumCircuit(qr1, qr2, cr1, cr2) - - print("List the qubits in this circuit:", qc.qubits) - print("List the classical bits in this circuit:", qc.clbits) - ``` - - ```text - List the qubits in this circuit: [Qubit(QuantumRegister(2, 'q0'), 0), - Qubit(QuantumRegister(2, 'q0'), 1), Qubit(QuantumRegister(1, 'q1'), 0)] - List the classical bits in this circuit: [Clbit(ClassicalRegister(2, 'c0'), 0), - Clbit(ClassicalRegister(2, 'c0'), 1), Clbit(ClassicalRegister(1, 'c1'), 0)] - ``` - - - ### cregs - - - A list of `Clbit`s in the order that they were added. You should not mutate this. - - - ### data - - - The circuit data (instructions and context). - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.measure([0], [1]) - print(qc.data) - ``` - - ```text - [CircuitInstruction(operation=Instruction(name='measure', num_qubits=1, - num_clbits=1, params=[]), qubits=(Qubit(QuantumRegister(2, 'q'), 0),), - clbits=(Clbit(ClassicalRegister(2, 'c'), 1),))] - ``` - - **Returns** - - A list-like object containing the [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") instances in the circuit. - - - ### duration - - - The total duration of the circuit, set by a scheduling transpiler pass. Its unit is specified by [`unit`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.unit "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.unit"). - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.duration` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - - ### global\_phase - - - The global phase of the current circuit scope in radians. - - **Example** - - ```python - from qiskit import QuantumCircuit - - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - print(circuit.global_phase) - ``` - - ```text - 0.0 - ``` - - ```python - from numpy import pi - - circuit.global_phase = pi/4 - print(circuit.global_phase) - ``` - - ```text - 0.7853981633974483 - ``` - - - ### instances - - - - ### layout - - - Return any associated layout information about the circuit. - - This attribute contains an optional [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") object. This is typically set on the output from [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") or [`PassManager.run()`](qiskit.transpiler.PassManager#run "qiskit.transpiler.PassManager.run") to retain information about the permutations caused on the input circuit by transpilation. - - There are two types of permutations caused by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function: an initial layout that permutes the qubits based on the selected physical qubits on the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), and a final layout, which is an output permutation caused by [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate")s inserted during routing. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - # Create circuit to test transpiler on - qc = QuantumCircuit(3, 3) - qc.h(0) - qc.cx(0, 1) - qc.swap(1, 2) - qc.cx(0, 1) - - # Add measurements to the circuit - qc.measure([0, 1, 2], [0, 1, 2]) - - # Specify the QPU to target - backend = GenericBackendV2(3) - - # Transpile the circuit - pass_manager = generate_preset_pass_manager( - optimization_level=1, backend=backend - ) - transpiled = pass_manager.run(qc) - - # Print the layout after transpilation - print(transpiled.layout.routing_permutation()) - ``` - - ```text - [0, 1, 2] - ``` - - - ### metadata - - - Arbitrary user-defined dictionary of metadata for the circuit. - - Qiskit will not examine the content of this mapping, but it will pass it through the transpiler and reattach it to the output, so you can track your own metadata. - - **Example** - - ```python - from qiskit import QuantumCircuit - - qc = QuantumCircuit(2, 2, metadata={'experiment_type': 'Bell state experiment'}) - - print(qc.metadata) - ``` - - ```text - {'experiment_type': 'Bell state experiment'} - ``` - - - ### num\_ancillas - - - Return the number of ancilla qubits. - - **Example** - - ```python - from qiskit import QuantumCircuit, QuantumRegister, AncillaRegister - - # Create a 2-qubit quantum circuit - reg = QuantumRegister(2) - qc = QuantumCircuit(reg) - - # Create an ancilla register with 1 qubit - anc = AncillaRegister(1) - qc.add_register(anc) # Add the ancilla register to the circuit - - print("Number of ancilla qubits:", qc.num_ancillas) - ``` - - ```text - Number of ancilla qubits: 1 - ``` - - - ### num\_captured\_stretches - - - The number of stretches in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_stretches()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_input_vars "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_input_vars") must be zero. - - - ### num\_captured\_vars - - - The number of real-time classical variables in the circuit marked as captured from an enclosing scope. - - This is the length of the `iter_captured_vars()` iterable. If this is non-zero, [`num_input_vars`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_input_vars "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_input_vars") must be zero. - - - ### num\_clbits - - - Return number of classical bits. - - **Example** - - ```python - from qiskit import QuantumCircuit - - # Create a new circuit with two qubits and one classical bit - qc = QuantumCircuit(2, 1) - print("Number of classical bits:", qc.num_clbits) - ``` - - ```text - Number of classical bits: 1 - ``` - - - ### num\_declared\_stretches - - - The number of stretches in the circuit that are declared by this circuit scope, excluding captures. - - This is the length of the `iter_declared_stretches()` iterable. - - - ### num\_declared\_vars - - - The number of real-time classical variables in the circuit that are declared by this circuit scope, excluding inputs or captures. - - This is the length of the `iter_declared_vars()` iterable. - - - ### num\_identifiers - - - The number of real-time classical variables and stretches in the circuit. - - This is equal to [`num_vars()`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_vars "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_vars") + [`num_stretches()`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_stretches "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_stretches"). - - - ### num\_input\_vars - - - The number of real-time classical variables in the circuit marked as circuit inputs. - - This is the length of the `iter_input_vars()` iterable. If this is non-zero, [`num_captured_vars`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_captured_vars "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.num_captured_vars") must be zero. - - - ### num\_parameters - - - The number of parameter objects in the circuit. - - - ### num\_qubits - - - Return number of qubits. - - - ### num\_stretches - - - The number of stretches in the circuit. - - This is the length of the `iter_stretches()` iterable. - - - ### num\_vars - - - The number of real-time classical variables in the circuit. - - This is the length of the `iter_vars()` iterable. - - - ### op\_start\_times - - - Return a list of operation start times. - - - This attribute computes the estimate starting time of the operations in the scheduled circuit and only works for simple circuits that have no control flow or other classical feed-forward operations. - - - This attribute is enabled once one of scheduling analysis passes runs on the quantum circuit. - - **Example** - - ```python - from qiskit import QuantumCircuit - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.transpiler import generate_preset_pass_manager - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - - # Print the original circuit - print("Original circuit:") - print(qc) - - # Transpile the circuit with a specific basis gates list and print the resulting circuit - backend = GenericBackendV2(2, basis_gates=['u1', 'u2', 'u3', 'cx']) - pm = generate_preset_pass_manager( - optimization_level=1, backend=backend, scheduling_method="alap" - ) - transpiled_qc = pm.run(qc) - print("Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']:") - print(transpiled_qc) - - # Print the start times of each instruction in the transpiled circuit - print("Start times of instructions in the transpiled circuit:") - for instruction, start_time in zip(transpiled_qc.data, transpiled_qc.op_start_times): - print(f"{instruction.operation.name}: {start_time}") - ``` - - ```text - Original circuit: - ┌───┐ ░ ┌─┐ - q_0: ┤ H ├──■───░─┤M├─── - └───┘┌─┴─┐ ░ └╥┘┌─┐ - q_1: ─────┤ X ├─░──╫─┤M├ - └───┘ ░ ║ └╥┘ - meas: 2/══════════════╩══╩═ - 0 1 - - Transpiled circuit with basis gates ['u1', 'u2', 'u3', 'cx']: - ┌─────────┐ ░ ┌─────────────────┐┌─┐ - q_0 -> 0 ───┤ U2(0,π) ├──────■───░─┤ Delay(1255[dt]) ├┤M├ - ┌──┴─────────┴───┐┌─┴─┐ ░ └───────┬─┬───────┘└╥┘ - q_1 -> 1 ┤ Delay(196[dt]) ├┤ X ├─░─────────┤M├─────────╫─ - └────────────────┘└───┘ ░ └╥┘ ║ - meas: 2/═══════════════════════════════════╩══════════╩═ - 1 0 - - Start times of instructions in the transpiled circuit: - u2: 0 - delay: 0 - cx: 196 - barrier: 2098 - delay: 2098 - measure: 3353 - measure: 2098 - ``` - - **Returns** - - List of integers representing instruction estimated start times. The index corresponds to the index of instruction in `QuantumCircuit.data`. - - **Raises** - - [**AttributeError**](https://docs.python.org/3/library/exceptions.html#AttributeError "(in Python v3.13)") – When circuit is not scheduled. - - - ### parameters - - - The parameters defined in the circuit. - - This attribute returns the [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit sorted alphabetically. Note that parameters instantiated with a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") are still sorted numerically. - - **Examples** - - The snippet below shows that insertion order of parameters does not matter. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant") - >>> circuit = QuantumCircuit(1) - >>> circuit.rx(b, 0) - >>> circuit.rz(elephant, 0) - >>> circuit.ry(a, 0) - >>> circuit.parameters # sorted alphabetically! - ParameterView([Parameter(a), Parameter(b), Parameter(elephant)]) - ``` - - Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers. The literal “10” comes before “2” in strict alphabetical sorting. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter - >>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")] - >>> circuit = QuantumCircuit(1) - >>> circuit.u(*angles, 0) - >>> circuit.draw() - ┌─────────────────────────────┐ - q: ┤ U(angle_1,angle_2,angle_10) ├ - └─────────────────────────────┘ - >>> circuit.parameters - ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)]) - ``` - - To respect numerical sorting, a [`ParameterVector`](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") can be used. - - ```python - >>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector - >>> x = ParameterVector("x", 12) - >>> circuit = QuantumCircuit(1) - >>> for x_i in x: - ... circuit.rx(x_i, 0) - >>> circuit.parameters - ParameterView([ - ParameterVectorElement(x[0]), ParameterVectorElement(x[1]), - ParameterVectorElement(x[2]), ParameterVectorElement(x[3]), - ..., ParameterVectorElement(x[11]) - ]) - ``` - - **Returns** - - The sorted [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") objects in the circuit. - - - ### prefix - - - - ### qregs - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - - ### qubits - - - A list of `Qubit`s in the order that they were added. You should not mutate this. - - ### thetas @@ -490,16 +36,6 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitCircuit Parameters of the rotation gates in this circuit. - ### unit - - - The unit that [`duration`](#qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.duration "qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.duration") is specified in. - - - The property `qiskit.circuit.quantumcircuit.QuantumCircuit.unit` is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 3.0.0. - - - ### name diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitObjective.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitObjective.mdx index 58b8a981005..b2ef03dfe58 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitObjective.mdx @@ -31,11 +31,5 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitObjective Returns: Number of parameters (angles) of rotation gates in this circuit. - - ### target\_matrix - - - Returns: a matrix being approximated - diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective.mdx index 6a350ab41c2..99f96bf43e5 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective.mdx @@ -18,26 +18,6 @@ python_api_name: qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective * **num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – number of qubits. * **cnots** (*np.ndarray*) – a CNOT structure to be used in the optimization procedure. - ## Attributes - - ### num\_cnots - - - Returns: A number of CNOT units to be used by the approximate circuit. - - - ### num\_thetas - - - Returns: Number of parameters (angles) of rotation gates in this circuit. - - - ### target\_matrix - - - Returns: a matrix being approximated - - ## Methods ### gradient diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective.mdx index 61d4db11231..6f30f37f5df 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective.mdx @@ -18,26 +18,6 @@ python_api_name: qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective * **num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – number of qubits. * **cnots** ([*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v2.3)")) – a CNOT structure to be used in the optimization procedure. - ## Attributes - - ### num\_cnots - - - Returns: A number of CNOT units to be used by the approximate circuit. - - - ### num\_thetas - - - Returns: Number of parameters (angles) of rotation gates in this circuit. - - - ### target\_matrix - - - Returns: a matrix being approximated - - ## Methods ### gradient diff --git a/docs/api/qiskit/dev/qiskit.transpiler.PassManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.PassManager.mdx index 8ebe298ee86..a5594abc63b 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.PassManager.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.PassManager.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.PassManager # PassManager - + Bases: [`BasePassManager`](qiskit.passmanager.BasePassManager "qiskit.passmanager.passmanager.BasePassManager") Manager for a set of Passes and their scheduling during transpilation. @@ -24,7 +24,7 @@ python_api_name: qiskit.transpiler.PassManager ### append - + Append a Pass Set to the schedule of passes. **Parameters** @@ -42,7 +42,7 @@ python_api_name: qiskit.transpiler.PassManager ### draw - + Draw the pass manager. This function needs [pydot](https://github.com/erocarrera/pydot), which in turn needs [Graphviz](https://www.graphviz.org/) to be installed. @@ -86,7 +86,7 @@ python_api_name: qiskit.transpiler.PassManager ### replace - + Replace a particular pass in the scheduler. **Parameters** @@ -101,7 +101,7 @@ python_api_name: qiskit.transpiler.PassManager ### run - + Run all the passes on the specified `circuits`. **Parameters** @@ -140,6 +140,10 @@ python_api_name: qiskit.transpiler.PassManager ... ``` + + When running transpilation with multi-processing, the callback function is invoked within the context of each sub-process, independently of the parent process. + + * **num\_processes** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – The maximum number of parallel processes to launch if parallel execution is enabled. This argument overrides `num_processes` in the user configuration file, and the `QISKIT_NUM_PROCS` environment variable. If set to `None` the system default or local user configuration will be used. * **property\_set** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*,* [*object*](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)")*] | None*) – If given, the initial value to use as the [`PropertySet`](qiskit.passmanager.PropertySet "qiskit.passmanager.PropertySet") for the pass manager pipeline. This can be used to persist analysis from one run to another, in cases where you know the analysis is safe to share. Beware that some analysis will be specific to the input circuit and the particular [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), so you should take a lot of care when using this argument. @@ -155,7 +159,7 @@ python_api_name: qiskit.transpiler.PassManager ### to\_flow\_controller - + Linearize this manager into a single [`FlowControllerLinear`](qiskit.passmanager.FlowControllerLinear "qiskit.passmanager.FlowControllerLinear"), so that it can be nested inside another pass manager. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.StagedPassManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.StagedPassManager.mdx index 54f48045e44..02adaa098c5 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.StagedPassManager.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.StagedPassManager.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.StagedPassManager # StagedPassManager - + Bases: [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.passmanager.PassManager") A pass manager pipeline built from individual stages. @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.StagedPassManager ### append - + Append a Pass Set to the schedule of passes. **Parameters** @@ -82,13 +82,13 @@ python_api_name: qiskit.transpiler.StagedPassManager ### draw - + Draw the staged pass manager. ### remove - + Removes a particular pass in the scheduler. **Parameters** @@ -106,7 +106,7 @@ python_api_name: qiskit.transpiler.StagedPassManager ### replace - + Replace a particular pass in the scheduler. **Parameters** @@ -121,7 +121,7 @@ python_api_name: qiskit.transpiler.StagedPassManager ### run - + Run all the passes on the specified `circuits`. **Parameters** @@ -160,6 +160,10 @@ python_api_name: qiskit.transpiler.StagedPassManager ... ``` + + When running transpilation with multi-processing, the callback function is invoked within the context of each sub-process, independently of the parent process. + + * **num\_processes** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – The maximum number of parallel processes to launch if parallel execution is enabled. This argument overrides `num_processes` in the user configuration file, and the `QISKIT_NUM_PROCS` environment variable. If set to `None` the system default or local user configuration will be used. * **property\_set** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*,* [*object*](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)")*] | None*) – If given, the initial value to use as the [`PropertySet`](qiskit.passmanager.PropertySet "qiskit.passmanager.PropertySet") for the pass manager pipeline. This can be used to persist analysis from one run to another, in cases where you know the analysis is safe to share. Beware that some analysis will be specific to the input circuit and the particular [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target"), so you should take a lot of care when using this argument. @@ -175,7 +179,7 @@ python_api_name: qiskit.transpiler.StagedPassManager ### to\_flow\_controller - + Linearize this manager into a single [`FlowControllerLinear`](qiskit.passmanager.FlowControllerLinear "qiskit.passmanager.FlowControllerLinear"), so that it can be nested inside another pass manager. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.generate_preset_pass_manager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.generate_preset_pass_manager.mdx index 599c7e337da..c95653ca03a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.generate_preset_pass_manager.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.generate_preset_pass_manager.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.transpiler.generate_preset_pass_manager # qiskit.transpiler.generate\_preset\_pass\_manager - + Generate a preset [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") This function is used to quickly generate a preset pass manager. Preset pass managers are the default pass managers used by the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function. This function provides a convenient and simple method to construct a standalone [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") object that mirrors what the [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile") function internally builds and uses. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPScheduleAnalysis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPScheduleAnalysis.mdx index c7e33d6668a..897239b2c04 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPScheduleAnalysis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPScheduleAnalysis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ALAPScheduleAnalysis # ALAPScheduleAnalysis - + Bases: `BaseScheduler` ALAP Scheduling pass, which schedules the **stop** time of instructions as late as possible. @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.passes.ALAPScheduleAnalysis ### run - + Run the ALAPSchedule pass on dag. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Error.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Error.mdx new file mode 100644 index 00000000000..41de6a30009 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Error.mdx @@ -0,0 +1,102 @@ +--- +title: Error (dev version) +description: API reference for qiskit.transpiler.passes.Error in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.Error +--- + +# Error + + + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") + + Error pass to be called when an error happens. + + Error pass. + + **Parameters** + + * **msg** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") *| Callable\[\[*[*PropertySet*](qiskit.passmanager.PropertySet "qiskit.passmanager.PropertySet")*],* [*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*]*) – Error message, if not provided a generic error will be used. This can be either a raw string, or a callback function that accepts the current `property_set` and returns the desired message. + * **action** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – the action to perform. Default: ‘raise’. The options are: \* `'raise'`: Raises a `TranspilerError` exception with msg \* `'warn'`: Raises a non-fatal warning with msg \* `'log'`: logs in `logging.getLogger(__name__)` + + **Raises** + + [**TranspilerError**](transpiler#qiskit.transpiler.TranspilerError "qiskit.transpiler.TranspilerError") – if action is not valid. + + ## Attributes + + ### is\_analysis\_pass + + + Check if the pass is an analysis pass. + + If the pass is an AnalysisPass, that means that the pass can analyze the DAG and write the results of that analysis in the property set. Modifications on the DAG are not allowed by this kind of pass. + + + ### is\_transformation\_pass + + + Check if the pass is a transformation pass. + + If the pass is a TransformationPass, that means that the pass can manipulate the DAG, but cannot modify the property set (but it can be read). + + + ## Methods + + ### execute + + + Execute optimization task for input Qiskit IR. + + **Parameters** + + * **passmanager\_ir** ([*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)")) – Qiskit IR to optimize. + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – State associated with workflow execution by the pass manager itself. + * **callback** ([*Callable*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable "(in Python v3.13)") *| None*) – A callback function which is caller per execution of optimization task. + + **Returns** + + Optimized Qiskit IR and state of the workflow. + + **Return type** + + [tuple](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)"), [qiskit.passmanager.compilation\_status.PassManagerState](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")] + + + ### name + + + Name of the pass. + + **Return type** + + [str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") + + + ### run + + + Run the Error pass on dag. + + + ### update\_status + + + Update workflow status. + + **Parameters** + + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – Pass manager state to update. + * **run\_state** (*RunState*) – Completion status of current task. + + **Returns** + + Updated pass manager state. + + **Return type** + + [*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState") + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.InstructionDurationCheck.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.InstructionDurationCheck.mdx index 90a9ea95e64..cfe22cbc2e1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.InstructionDurationCheck.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.InstructionDurationCheck.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.InstructionDurationCheck # InstructionDurationCheck - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Duration validation pass for reschedule. @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.passes.InstructionDurationCheck ### run - + Run duration validation passes. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.InverseCancellation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.InverseCancellation.mdx index 220e4d18cb7..6af18d3de37 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.InverseCancellation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.InverseCancellation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation # InverseCancellation - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Cancel specific Gates which are inverses of each other when they occur back-to- back. @@ -17,7 +17,34 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation **Parameters** - **gates\_to\_cancel** – List describing the gates to cancel. Each element of the list is either a single gate or a pair of gates. If a single gate, then it should be self-inverse. If a pair of gates, then the gates in the pair should be inverses of each other. + * **gates\_to\_cancel** – + + List describing the gates to cancel. Each element of the list is either a single gate or a pair of gates. If a single gate, then it should be self-inverse. If a pair of gates, then the gates in the pair should be inverses of each other. If `None` a default list of self-inverse gates and a default list of inverse gate pairs will be used. The current default list of self-inverse gates is: + + > * [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate") + > * [`ECRGate`](qiskit.circuit.library.ECRGate "qiskit.circuit.library.ECRGate") + > * [`CYGate`](qiskit.circuit.library.CYGate "qiskit.circuit.library.CYGate") + > * [`CZGate`](qiskit.circuit.library.CZGate "qiskit.circuit.library.CZGate") + > * [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.library.XGate") + > * [`YGate`](qiskit.circuit.library.YGate "qiskit.circuit.library.YGate") + > * [`ZGate`](qiskit.circuit.library.ZGate "qiskit.circuit.library.ZGate") + > * [`HGate`](qiskit.circuit.library.HGate "qiskit.circuit.library.HGate") + > * [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate") + > * [`CHGate`](qiskit.circuit.library.CHGate "qiskit.circuit.library.CHGate") + > * [`CCXGate`](qiskit.circuit.library.CCXGate "qiskit.circuit.library.CCXGate") + > * [`CCZGate`](qiskit.circuit.library.CCZGate "qiskit.circuit.library.CCZGate") + > * [`RCCXGate`](qiskit.circuit.library.RCCXGate "qiskit.circuit.library.RCCXGate") + > * [`CSwapGate`](qiskit.circuit.library.CSwapGate "qiskit.circuit.library.CSwapGate") + > * [`C3XGate`](qiskit.circuit.library.C3XGate "qiskit.circuit.library.C3XGate") + + and the default list of inverse gate pairs is: + + > * [`TGate`](qiskit.circuit.library.TGate "qiskit.circuit.library.TGate") and [`TdgGate`](qiskit.circuit.library.TdgGate "qiskit.circuit.library.TdgGate") + > * [`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate") and [`SdgGate`](qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate") + > * [`SXGate`](qiskit.circuit.library.SXGate "qiskit.circuit.library.SXGate") and [`SXdgGate`](qiskit.circuit.library.SXdgGate "qiskit.circuit.library.SXdgGate") + > * [`CSGate`](qiskit.circuit.library.CSGate "qiskit.circuit.library.CSGate") and [`CSdgGate`](qiskit.circuit.library.CSdgGate "qiskit.circuit.library.CSdgGate") + + * **run\_default** – If set to true and `gates_to_cancel` is set to a list then in addition to the gates listed in `gates_to_cancel` the default list of gate inverses (the same as when `gates_to_cancel` is set to `None`) will be run. The order of evaluation is significant in how sequences of gates are cancelled and the default gates will be evaluated after the provided gates in `gates_to_cancel`. If `gates_to_cancel` is `None` this option has no impact. **Raises** @@ -75,7 +102,7 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation ### run - + Run the InverseCancellation pass on dag. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.LayoutTransformation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.LayoutTransformation.mdx new file mode 100644 index 00000000000..f3086d195ec --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.LayoutTransformation.mdx @@ -0,0 +1,119 @@ +--- +title: LayoutTransformation (dev version) +description: API reference for qiskit.transpiler.passes.LayoutTransformation in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.LayoutTransformation +--- + +# LayoutTransformation + + + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") + + Adds a Swap circuit for a given (partial) permutation to the circuit. + + This circuit is found by a 4-approximation algorithm for Token Swapping. More details are available in the routing code. + + LayoutTransformation initializer. + + **Parameters** + + * **coupling\_map** – Directed graph representing a coupling map. + * **from\_layout** (*Union\[*[*Layout*](qiskit.transpiler.Layout "qiskit.transpiler.Layout")*,* [*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*]*) – The starting layout of qubits onto physical qubits. If the type is str, look up property\_set when this pass runs. + * **to\_layout** (*Union\[*[*Layout*](qiskit.transpiler.Layout "qiskit.transpiler.Layout")*,* [*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")*]*) – The final layout of qubits on physical qubits. If the type is str, look up `property_set` when this pass runs. + * **seed** (*Union\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")*, np.random.default\_rng]*) – Seed to use for random trials. + * **trials** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – How many randomized trials to perform, taking the best circuit as output. + + ## Attributes + + ### is\_analysis\_pass + + + Check if the pass is an analysis pass. + + If the pass is an AnalysisPass, that means that the pass can analyze the DAG and write the results of that analysis in the property set. Modifications on the DAG are not allowed by this kind of pass. + + + ### is\_transformation\_pass + + + Check if the pass is a transformation pass. + + If the pass is a TransformationPass, that means that the pass can manipulate the DAG, but cannot modify the property set (but it can be read). + + + ## Methods + + ### execute + + + Execute optimization task for input Qiskit IR. + + **Parameters** + + * **passmanager\_ir** ([*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)")) – Qiskit IR to optimize. + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – State associated with workflow execution by the pass manager itself. + * **callback** ([*Callable*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable "(in Python v3.13)") *| None*) – A callback function which is caller per execution of optimization task. + + **Returns** + + Optimized Qiskit IR and state of the workflow. + + **Return type** + + [tuple](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)"), [qiskit.passmanager.compilation\_status.PassManagerState](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")] + + + ### name + + + Name of the pass. + + **Return type** + + [str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") + + + ### run + + + Apply the specified partial permutation to the circuit. + + **Parameters** + + **dag** ([*DAGCircuit*](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – DAG to transform the layout of. + + **Returns** + + The DAG with transformed layout. + + **Return type** + + [DAGCircuit](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") + + **Raises** + + [**TranspilerError**](transpiler#qiskit.transpiler.TranspilerError "qiskit.transpiler.TranspilerError") – if the coupling map or the layout are not compatible with the DAG. Or if either of string from/to\_layout is not found in property\_set. + + + ### update\_status + + + Update workflow status. + + **Parameters** + + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – Pass manager state to update. + * **run\_state** (*RunState*) – Completion status of current task. + + **Returns** + + Updated pass manager state. + + **Return type** + + [*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState") + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffordT.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffordT.mdx new file mode 100644 index 00000000000..87cb5d25601 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffordT.mdx @@ -0,0 +1,105 @@ +--- +title: OptimizeCliffordT (dev version) +description: API reference for qiskit.transpiler.passes.OptimizeCliffordT in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.OptimizeCliffordT +--- + +# OptimizeCliffordT + + + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") + + An optimization pass for Clifford+T circuits. + + Currently all the pass does is merging pairs of consecutive T-gates into S-gates, and pair of consecutive Tdg-gates into Sdg-gates. + + ## Attributes + + ### is\_analysis\_pass + + + Check if the pass is an analysis pass. + + If the pass is an AnalysisPass, that means that the pass can analyze the DAG and write the results of that analysis in the property set. Modifications on the DAG are not allowed by this kind of pass. + + + ### is\_transformation\_pass + + + Check if the pass is a transformation pass. + + If the pass is a TransformationPass, that means that the pass can manipulate the DAG, but cannot modify the property set (but it can be read). + + + ## Methods + + ### execute + + + Execute optimization task for input Qiskit IR. + + **Parameters** + + * **passmanager\_ir** ([*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)")) – Qiskit IR to optimize. + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – State associated with workflow execution by the pass manager itself. + * **callback** ([*Callable*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable "(in Python v3.13)") *| None*) – A callback function which is caller per execution of optimization task. + + **Returns** + + Optimized Qiskit IR and state of the workflow. + + **Return type** + + [tuple](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)"), [qiskit.passmanager.compilation\_status.PassManagerState](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")] + + + ### name + + + Name of the pass. + + **Return type** + + [str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") + + + ### run + + + Run the OptimizeCliffordT pass on dag. + + **Parameters** + + **dag** ([*DAGCircuit*](qiskit.dagcircuit.DAGCircuit "qiskit._accelerate.circuit.DAGCircuit")) – The directed acyclic graph to run on. + + **Returns** + + Transformed DAG. + + **Return type** + + [DAGCircuit](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") + + + ### update\_status + + + Update workflow status. + + **Parameters** + + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – Pass manager state to update. + * **run\_state** (*RunState*) – Completion status of current task. + + **Returns** + + Updated pass manager state. + + **Return type** + + [*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState") + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeSwapBeforeMeasure.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeSwapBeforeMeasure.mdx new file mode 100644 index 00000000000..9ec59a75332 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeSwapBeforeMeasure.mdx @@ -0,0 +1,105 @@ +--- +title: OptimizeSwapBeforeMeasure (dev version) +description: API reference for qiskit.transpiler.passes.OptimizeSwapBeforeMeasure in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.OptimizeSwapBeforeMeasure +--- + +# OptimizeSwapBeforeMeasure + + + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") + + Remove the swaps followed by measurement (and adapt the measurement). + + Transpiler pass to remove swaps in front of measurements by re-targeting the classical bit of the measure instruction. + + ## Attributes + + ### is\_analysis\_pass + + + Check if the pass is an analysis pass. + + If the pass is an AnalysisPass, that means that the pass can analyze the DAG and write the results of that analysis in the property set. Modifications on the DAG are not allowed by this kind of pass. + + + ### is\_transformation\_pass + + + Check if the pass is a transformation pass. + + If the pass is a TransformationPass, that means that the pass can manipulate the DAG, but cannot modify the property set (but it can be read). + + + ## Methods + + ### execute + + + Execute optimization task for input Qiskit IR. + + **Parameters** + + * **passmanager\_ir** ([*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)")) – Qiskit IR to optimize. + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – State associated with workflow execution by the pass manager itself. + * **callback** ([*Callable*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable "(in Python v3.13)") *| None*) – A callback function which is caller per execution of optimization task. + + **Returns** + + Optimized Qiskit IR and state of the workflow. + + **Return type** + + [tuple](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)"), [qiskit.passmanager.compilation\_status.PassManagerState](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")] + + + ### name + + + Name of the pass. + + **Return type** + + [str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") + + + ### run + + + Run the OptimizeSwapBeforeMeasure pass on dag. + + **Parameters** + + **dag** ([*DAGCircuit*](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – the DAG to be optimized. + + **Returns** + + the optimized DAG. + + **Return type** + + [DAGCircuit](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") + + + ### update\_status + + + Update workflow status. + + **Parameters** + + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – Pass manager state to update. + * **run\_state** (*RunState*) – Completion status of current task. + + **Returns** + + Updated pass manager state. + + **Return type** + + [*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState") + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx index f34e2e2bdb8..c59a364af58 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx @@ -90,7 +90,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay ### get\_duration - + Get duration of a given node in the circuit. @@ -106,7 +106,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay ### run - + Run the padding pass on `dag`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx index cc858d98520..c9c5b2bca21 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx @@ -154,7 +154,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling ### get\_duration - + Get duration of a given node in the circuit. @@ -170,7 +170,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling ### run - + Run the padding pass on `dag`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ResourceEstimation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ResourceEstimation.mdx new file mode 100644 index 00000000000..9912b334007 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ResourceEstimation.mdx @@ -0,0 +1,93 @@ +--- +title: ResourceEstimation (dev version) +description: API reference for qiskit.transpiler.passes.ResourceEstimation in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.ResourceEstimation +--- + +# ResourceEstimation + + + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") + + Automatically require analysis passes for resource estimation. + + An analysis pass for automatically running: \* Depth() \* Width() \* Size() \* CountOps() \* NumTensorFactors() + + ## Attributes + + ### is\_analysis\_pass + + + Check if the pass is an analysis pass. + + If the pass is an AnalysisPass, that means that the pass can analyze the DAG and write the results of that analysis in the property set. Modifications on the DAG are not allowed by this kind of pass. + + + ### is\_transformation\_pass + + + Check if the pass is a transformation pass. + + If the pass is a TransformationPass, that means that the pass can manipulate the DAG, but cannot modify the property set (but it can be read). + + + ## Methods + + ### execute + + + Execute optimization task for input Qiskit IR. + + **Parameters** + + * **passmanager\_ir** ([*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)")) – Qiskit IR to optimize. + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – State associated with workflow execution by the pass manager itself. + * **callback** ([*Callable*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable "(in Python v3.13)") *| None*) – A callback function which is caller per execution of optimization task. + + **Returns** + + Optimized Qiskit IR and state of the workflow. + + **Return type** + + [tuple](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.13)"), [qiskit.passmanager.compilation\_status.PassManagerState](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")] + + + ### name + + + Name of the pass. + + **Return type** + + [str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)") + + + ### run + + + Run the ResourceEstimation pass on dag. + + + ### update\_status + + + Update workflow status. + + **Parameters** + + * **state** ([*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState")) – Pass manager state to update. + * **run\_state** (*RunState*) – Completion status of current task. + + **Returns** + + Updated pass manager state. + + **Return type** + + [*PassManagerState*](qiskit.passmanager.PassManagerState "qiskit.passmanager.compilation_status.PassManagerState") + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ACGSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ACGSynthesisPermutation.mdx index 329f489ee19..bd2aa8e8936 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ACGSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ACGSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ACGSynthesisPerm # ACGSynthesisPermutation - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The permutation synthesis plugin based on the Alon, Chung, Graham method. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ACGSynthesisPerm ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.AGSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.AGSynthesisClifford.mdx index 9696ddb2ce6..72d79b89de8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.AGSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.AGSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.AGSynthesisCliff # AGSynthesisClifford - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Clifford synthesis plugin based on the Aaronson-Gottesman method. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.AGSynthesisCliff ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BMSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BMSynthesisClifford.mdx index 07c754d04a1..561dd2e683c 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BMSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BMSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.BMSynthesisCliff # BMSynthesisClifford - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Clifford synthesis plugin based on the Bravyi-Maslov method. @@ -21,7 +21,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.BMSynthesisCliff ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BasicSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BasicSynthesisPermutation.mdx index cdc939aa27e..5a961e10a74 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BasicSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.BasicSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.BasicSynthesisPe # BasicSynthesisPermutation - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The permutation synthesis plugin based on sorting. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.BasicSynthesisPe ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisClifford.mdx index cfdab0b5d9c..1f546890ac3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesis # DefaultSynthesisClifford - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The default clifford synthesis plugin. @@ -21,7 +21,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesis ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisLinearFunction.mdx index 2b38004ded1..2a1cf545799 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesisLinearFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesis # DefaultSynthesisLinearFunction - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The default linear function synthesis plugin. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.DefaultSynthesis ### run - + Run synthesis for the given LinearFunction. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisC04.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisC04.mdx index 722bf524913..3bc50721385 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisC04.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisC04.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthes # FullAdderSynthesisC04 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder with a carry-in and a carry-out bit. @@ -21,7 +21,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisDefault.mdx index 2ce4cf0237f..bb41006753e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthes # FullAdderSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder with a carry-in and a carry-out bit. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisV95.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisV95.mdx index 47e0de6de28..9c037c15c25 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisV95.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthesisV95.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthes # FullAdderSynthesisV95 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder with a carry-in and a carry-out bit. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.FullAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.GreedySynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.GreedySynthesisClifford.mdx index 008c63253a4..6376fcf63ed 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.GreedySynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.GreedySynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.GreedySynthesisC # GreedySynthesisClifford - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Clifford synthesis plugin based on the greedy synthesis Bravyi-Hu-Maslov-Shaydulin method. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.GreedySynthesisC ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisC04.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisC04.mdx index 9a6034cd096..606df8bf06e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisC04.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisC04.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes # HalfAdderSynthesisC04 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder with a carry-out bit. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisD00.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisD00.mdx index 01602d780e6..498a17f6db1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisD00.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisD00.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes # HalfAdderSynthesisD00 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A QFT-based adder with a carry-in and a carry-out bit. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisDefault.mdx index c23894688e4..86f6c4e0e4e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes # HalfAdderSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The default half-adder (no carry in, but a carry out qubit) synthesis. @@ -27,7 +27,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisR25.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisR25.mdx index 630e5d85f16..966482e732a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisR25.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisR25.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes # HalfAdderSynthesisR25 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder with a carry-out bit with no ancillary qubits. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisV95.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisV95.mdx index a04a4ed6d9a..5de51a73588 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisV95.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisV95.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes # HalfAdderSynthesisV95 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder with a carry-out bit. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthes ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesis2s.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesis2s.mdx index 2a30ec53d19..a1e5a11c5e8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesis2s.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesis2s.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSyn # IntComparatorSynthesis2s - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") An integer comparison based on 2s complement. @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSyn ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisDefault.mdx index fa49684df78..f3413e893b0 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSyn # IntComparatorSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The default synthesis for `IntegerComparatorGate`. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSyn ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisNoAux.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisNoAux.mdx index 8ae9cd18f7c..934936bbb32 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisNoAux.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSynthesisNoAux.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSyn # IntComparatorSynthesisNoAux - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A potentially exponentially expensive comparison w/o auxiliary qubits. @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.IntComparatorSyn ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisLinearFunction.mdx index d48c858656b..cfbfd462e29 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisLinearFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisLine # KMSSynthesisLinearFunction - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Linear function synthesis plugin based on the Kutin-Moulton-Smithline method. @@ -29,7 +29,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisLine ### run - + Run synthesis for the given LinearFunction. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisPermutation.mdx index 39cf33a6472..bc1c670e081 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisPerm # KMSSynthesisPermutation - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The permutation synthesis plugin based on the Kutin, Moulton, Smithline method. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.KMSSynthesisPerm ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerLnnSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerLnnSynthesisClifford.mdx index 63a205c255b..8529473ad97 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerLnnSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerLnnSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.LayerLnnSynthesi # LayerLnnSynthesisClifford - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Clifford synthesis plugin based on the Bravyi-Maslov method to synthesize Cliffords into layers, with each layer synthesized adhering to LNN connectivity. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.LayerLnnSynthesi ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerSynthesisClifford.mdx index d5f956beb2e..8ff897c901d 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.LayerSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.LayerSynthesisCl # LayerSynthesisClifford - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Clifford synthesis plugin based on the Bravyi-Maslov method to synthesize Cliffords into layers. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.LayerSynthesisCl ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault.mdx index 2c972fe7f5a..84cb1a89093 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDef # MCMTSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A default decomposition for MCMT gates. @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDef ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux.mdx index d491b32a687..716bb1d3722 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoA # MCMTSynthesisNoAux - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A V-chain based synthesis for `MCMTGate`. @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoA ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain.mdx index ca9482e5d92..41923331e0a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVCh # MCMTSynthesisVChain - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A V-chain based synthesis for `MCMTGate`. @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVCh ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate.mdx new file mode 100644 index 00000000000..22c440bbf60 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate.mdx @@ -0,0 +1,42 @@ +--- +title: MCMTSynthesisXGate (dev version) +description: API reference for qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate +--- + +# MCMTSynthesisXGate + + + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") + + A synthesis for `MCMTGate` with X gate as the base gate. + + ## Methods + + ### run + + + Run synthesis for the given Operation. + + **Parameters** + + * **high\_level\_object** ([*Operation*](qiskit.circuit.Operation "qiskit.circuit.Operation")) – The Operation to synthesize to a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") object. + * **coupling\_map** ([*CouplingMap*](qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap")) – The coupling map of the backend in case synthesis is done on a physical circuit. + * **target** ([*Target*](qiskit.transpiler.Target "qiskit.transpiler.Target")) – A target representing the target backend. + * **qubits** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")) – List of qubits over which the operation is defined in case synthesis is done on a physical circuit. + * **options** – Additional method-specific optional kwargs. + + **Returns** + + **The quantum circuit representation of the Operation** + + when successful, and `None` otherwise. + + **Return type** + + [QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95.mdx index 2f5d89bdff0..4a0ff4f8df9 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Cle # MCXSynthesis1CleanB95 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Barenco et al. (1995). @@ -31,7 +31,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Cle ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24.mdx index 80e44d9e039..2a7ba06faaa 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Cle # MCXSynthesis1CleanKG24 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Khattar and Gidney (2024). @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Cle The plugin name is :`mcx.1_clean_kg24` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis"). - For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $1$ additional clean ancillary qubit. The synthesized circuit consists of $k + 2$ qubits and at most $12 * k - 18$ CX gates. + For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $1$ additional clean ancillary qubit. The synthesized circuit consists of $k + 2$ qubits and at most $6 * k - 6$ CX gates. The plugin supports the following plugin-specific options: @@ -31,7 +31,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Cle ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24.mdx index 331a0f9744c..b2cdf9f5621 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Dir # MCXSynthesis1DirtyKG24 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Khattar and Gidney (2024). @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Dir The plugin name is :`mcx.1_dirty_kg24` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis"). - For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $1$ additional dirty ancillary qubit. The synthesized circuit consists of $k + 2$ qubits and at most $24 * k - 48$ CX gates. + For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $1$ additional dirty ancillary qubit. The synthesized circuit consists of $k + 2$ qubits and at most $12 * k - 18$ CX gates. The plugin supports the following plugin-specific options: @@ -31,7 +31,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1Dir ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24.mdx index 01ab83afdbe..1da88f23f1d 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2Cle # MCXSynthesis2CleanKG24 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Khattar and Gidney (2024). @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2Cle The plugin name is :`mcx.2_clean_kg24` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis"). - For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $2$ additional clean ancillary qubits. The synthesized circuit consists of $k + 2$ qubits and at most $12 * k - 18$ CX gates. + For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $2$ additional clean ancillary qubits. The synthesized circuit consists of $k + 3$ qubits and at most $6 * k - 6$ CX gates. The plugin supports the following plugin-specific options: @@ -31,7 +31,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2Cle ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24.mdx index 224726d4128..fa71741a1c0 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2Dir # MCXSynthesis2DirtyKG24 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Khattar and Gidney (2024). @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2Dir The plugin name is :`mcx.2_dirty_kg24` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis"). - For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $2$ additional dirty ancillary qubits. The synthesized circuit consists of $k + 2$ qubits and at most $24 * k - 48$ CX gates. + For a multi-controlled X gate with $k\ge 3$ control qubits this synthesis method requires $2$ additional dirty ancillary qubits. The synthesized circuit consists of $k + 3$ qubits and at most $12 * k - 18$ CX gates. The plugin supports the following plugin-specific options: @@ -31,7 +31,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2Dir ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefault.mdx index d7b9d7c94b3..e4b8a19baa6 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefa # MCXSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The default synthesis plugin for a multi-controlled X gate. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefa ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode.mdx index b8ac55b19c4..6d69d76c92a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGray # MCXSynthesisGrayCode - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the Gray code. @@ -23,7 +23,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGray ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15.mdx index 4aced1ba934..0d1e9e941c6 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCle # MCXSynthesisNCleanM15 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Maslov (2016). @@ -31,7 +31,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCle ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15.mdx index bfc25140b4e..5fc09e2106b 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDir # MCXSynthesisNDirtyI15 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the paper by Iten et al. (2016). @@ -34,7 +34,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDir ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24.mdx new file mode 100644 index 00000000000..32ff7068729 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24.mdx @@ -0,0 +1,34 @@ +--- +title: MCXSynthesisNoAuxHP24 (dev version) +description: API reference for qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24 in the dev version of qiskit +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24 +--- + +# MCXSynthesisNoAuxHP24 + + + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") + + Synthesis plugin for a multi-controlled X gate based on the paper by Huang and Palsberg. + + See \[1] for details. + + This plugin name is :`mcx.noaux_hp24` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis"). + + For a multi-controlled X gate with $k$ control qubits this synthesis method requires no additional clean auxiliary qubits. The synthesized circuit consists of $k + 1$ qubits. The number of CX-gates is linear in $k$. + + **References** + + 1. Huang and Palsberg, *Compiling Conditional Quantum Gates without Using Helper Qubits*, PLDI (2024), \<[https://dl.acm.org/doi/10.1145/3656436](https://dl.acm.org/doi/10.1145/3656436)>\`\_ + + ## Methods + + ### run + + + Run synthesis for the given MCX gate. + + + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24.mdx index 1c8c3e5d278..e2a92f5f5f7 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAu # MCXSynthesisNoAuxV24 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for a multi-controlled X gate based on the implementation for MCPhaseGate, which is in turn based on the paper by Vale et al. (2024). @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAu This plugin name is :`mcx.noaux_v24` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis"). - For a multi-controlled X gate with $k$ control qubits this synthesis method requires no additional clean auxiliary qubits. The synthesized circuit consists of $k + 1$ qubits. + For a multi-controlled X gate with $k$ control qubits this synthesis method requires no additional clean auxiliary qubits. The synthesized circuit consists of $k + 1$ qubits. The number of CX-gates is quadratic in $k$. **References** @@ -27,7 +27,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAu ### run - + Run synthesis for the given MCX gate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisC04.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisC04.mdx index 32d8c417e82..9c459dc60d2 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisC04.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisC04.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt # ModularAdderSynthesisC04 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder, modulo $2^n$. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisD00.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisD00.mdx index f0a9967de34..ca46796a6dc 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisD00.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisD00.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt # ModularAdderSynthesisD00 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A QFT-based adder, modulo $2^n$. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisDefault.mdx index f3f03cf53b6..f96d42c5ad8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt # ModularAdderSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The default modular adder (no carry in, no carry out qubit) synthesis. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisV95.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisV95.mdx index 906abcf7f09..c945ebe34fa 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisV95.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynthesisV95.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt # ModularAdderSynthesisV95 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A ripple-carry adder, modulo $2^n$. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.ModularAdderSynt ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisH18.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisH18.mdx index 0b97b4921f3..abadb4e51e3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisH18.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisH18.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthe # MultiplierSynthesisH18 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A cumulative multiplier based on controlled adders. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthe ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisR17.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisR17.mdx index 946e352a7dd..c73647e2bfd 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisR17.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthesisR17.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthe # MultiplierSynthesisR17 - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") A QFT-based multiplier. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.MultiplierSynthe ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PMHSynthesisLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PMHSynthesisLinearFunction.mdx index 358b230edf9..7f457a4a2bf 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PMHSynthesisLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PMHSynthesisLinearFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.PMHSynthesisLine # PMHSynthesisLinearFunction - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Linear function synthesis plugin based on the Patel-Markov-Hayes method. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.PMHSynthesisLine ### run - + Run synthesis for the given LinearFunction. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisDefault.mdx index a9e14e3396d..52d6159b0e7 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSy # PauliEvolutionSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesize a [`PauliEvolutionGate`](qiskit.circuit.library.PauliEvolutionGate "qiskit.circuit.library.PauliEvolutionGate") using the default synthesis algorithm. @@ -25,7 +25,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSy ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq.mdx index a545568fd99..6f5db10a4b0 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSynthesisRustiq.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSy # PauliEvolutionSynthesisRustiq - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesize a [`PauliEvolutionGate`](qiskit.circuit.library.PauliEvolutionGate "qiskit.circuit.library.PauliEvolutionGate") using Rustiq. @@ -47,7 +47,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.PauliEvolutionSy ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisFull.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisFull.mdx index 3da51788bae..8c54ce2c0bf 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisFull.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisFull.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisFull # QFTSynthesisFull - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for QFT gates using all-to-all connectivity. @@ -42,7 +42,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisFull ### run - + Run synthesis for the given QFTGate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisLine.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisLine.mdx index a389e05c6f1..cf51169347a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisLine.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisLine.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisLine # QFTSynthesisLine - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesis plugin for QFT gates using linear connectivity. @@ -36,7 +36,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.QFTSynthesisLine ### run - + Run synthesis for the given QFTGate. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.TokenSwapperSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.TokenSwapperSynthesisPermutation.mdx index acdffc15190..409ab1d61f2 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.TokenSwapperSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.TokenSwapperSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.TokenSwapperSynt # TokenSwapperSynthesisPermutation - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") The permutation synthesis plugin based on the token swapper algorithm. @@ -33,7 +33,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.TokenSwapperSynt ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.WeightedSumSynthesisDefault.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.WeightedSumSynthesisDefault.mdx index 5c1d40f3c16..d2f76056479 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.WeightedSumSynthesisDefault.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.hls_plugins.WeightedSumSynthesisDefault.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.WeightedSumSynth # WeightedSumSynthesisDefault - + Bases: [`HighLevelSynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin") Synthesize a [`WeightedSumGate`](qiskit.circuit.library.WeightedSumGate "qiskit.circuit.library.WeightedSumGate") using the default synthesis algorithm. @@ -23,7 +23,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.hls_plugins.WeightedSumSynth ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_multivector.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_multivector.mdx index a133f0e8d1c..7ba4e1bf2ca 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_multivector.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_multivector.mdx @@ -32,7 +32,7 @@ python_api_name: qiskit.visualization.plot_bloch_multivector **Return type** - [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.3)") + [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.5)") **Raises** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_vector.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_vector.mdx index fdfa0925713..c01fb3c5a37 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_vector.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_vector.mdx @@ -19,7 +19,7 @@ python_api_name: qiskit.visualization.plot_bloch_vector * **bloch** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")*\[double]*) – array of three elements where \[\, \, \] (Cartesian) or \[\, \, \] (spherical in radians) \ is inclination angle from +z direction \ is azimuth from +x direction * **title** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – a string that represents the plot title - * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An Axes to use for rendering the bloch sphere + * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An Axes to use for rendering the bloch sphere * **figsize** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")) – Figure size in inches. Has no effect is passing `ax`. * **coord\_type** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – a string that specifies coordinate type for bloch (Cartesian or spherical), default is Cartesian * **font\_size** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – Font size. @@ -30,7 +30,7 @@ python_api_name: qiskit.visualization.plot_bloch_vector **Return type** - [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.3)") + [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.5)") **Raises** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx index 7bbfa7a51b3..9e237c4c077 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx @@ -24,7 +24,7 @@ python_api_name: qiskit.visualization.plot_distribution * **legend** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")) – A list of strings to use for labels of the data. The number of entries must match the length of data (if data is a list or 1 if it’s a dict) * **bar\_labels** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – Label each bar in histogram with probability value. * **title** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – A string to use for the plot title - * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. * **filename** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – file path to save image to. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx index 20a89494c4a..c1867080ccc 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx @@ -24,7 +24,7 @@ python_api_name: qiskit.visualization.plot_histogram * **legend** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")) – A list of strings to use for labels of the data. The number of entries must match the length of data (if data is a list or 1 if it’s a dict) * **bar\_labels** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – Label each bar in histogram with counts value. * **title** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – A string to use for the plot title - * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. * **filename** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – file path to save image to. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_state_city.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_state_city.mdx index ad960f0b2d6..8130d4cda91 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_city.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_city.mdx @@ -22,8 +22,8 @@ python_api_name: qiskit.visualization.plot_state_city * **figsize** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")) – Figure size in inches. * **color** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")) – A list of len=2 giving colors for real and imaginary components of matrix elements. * **alpha** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")) – Transparency value for bars - * **ax\_real** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_imag only the real component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. - * **ax\_imag** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_real only the imaginary component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax\_real** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_imag only the real component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax\_imag** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_real only the imaginary component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. **Returns** @@ -31,7 +31,7 @@ python_api_name: qiskit.visualization.plot_state_city **Return type** - [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.3)") + [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.5)") **Raises** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_state_hinton.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_state_hinton.mdx index 7675908dd99..ea671aa7d52 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_hinton.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_hinton.mdx @@ -21,8 +21,8 @@ python_api_name: qiskit.visualization.plot_state_hinton * **title** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – a string that represents the plot title * **figsize** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")) – Figure size in inches. * **filename** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – file path to save image to. - * **ax\_real** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_imag only the real component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. - * **ax\_imag** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_imag only the real component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax\_real** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_imag only the real component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax\_imag** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. If this is specified without an ax\_imag only the real component plot will be generated. Additionally, if specified there will be no returned Figure since it is redundant. **Returns** @@ -30,7 +30,7 @@ python_api_name: qiskit.visualization.plot_state_hinton **Return type** - [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.3)") + [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.5)") **Raises** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_state_paulivec.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_state_paulivec.mdx index 5259ce252dc..233d75e902b 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_paulivec.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_paulivec.mdx @@ -28,7 +28,7 @@ $$ * **title** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – a string that represents the plot title * **figsize** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")) – Figure size in inches. * **color** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)") *or*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – Color of the coefficient value bars. - * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. **Returns** @@ -36,7 +36,7 @@ $$ **Return type** - [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.3)") + [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.5)") **Raises** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_state_qsphere.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_state_qsphere.mdx index 1fa2a1ad622..2054f4fbe2e 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_qsphere.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_qsphere.mdx @@ -17,7 +17,7 @@ python_api_name: qiskit.visualization.plot_state_qsphere * **state** ([*Statevector*](qiskit.quantum_info.Statevector "qiskit.quantum_info.Statevector") *or*[*DensityMatrix*](qiskit.quantum_info.DensityMatrix "qiskit.quantum_info.DensityMatrix") *or ndarray*) – an N-qubit quantum state. * **figsize** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.13)")) – Figure size in inches. - * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.3)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. + * **ax** ([*matplotlib.axes.Axes*](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.html#matplotlib.axes.Axes "(in Matplotlib v3.10.5)")) – An optional Axes object to be used for the visualization output. If none is specified a new matplotlib Figure will be created and used. Additionally, if specified there will be no returned Figure since it is redundant. * **show\_state\_labels** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – An optional boolean indicating whether to show labels for each basis state. * **show\_state\_phases** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – An optional boolean indicating whether to show the phase for each basis state. * **use\_degrees** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – An optional boolean indicating whether to use radians or degrees for the phase values in the plot. @@ -28,7 +28,7 @@ python_api_name: qiskit.visualization.plot_state_qsphere **Return type** - [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.3)") + [`matplotlib.figure.Figure`](https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure "(in Matplotlib v3.10.5)") **Raises** diff --git a/docs/api/qiskit/dev/synthesis.mdx b/docs/api/qiskit/dev/synthesis.mdx index 0a9bdab59e6..9737d8d0b9c 100644 --- a/docs/api/qiskit/dev/synthesis.mdx +++ b/docs/api/qiskit/dev/synthesis.mdx @@ -715,7 +715,7 @@ python_api_name: qiskit.synthesis ### synth\_qft\_full - + Construct a circuit for the Quantum Fourier Transform using all-to-all connectivity. @@ -746,42 +746,50 @@ Decomposition of general $2^n \times 2^n$ unitary matrices for any number of qub ### qs\_decomposition - - Decomposes a unitary matrix into one and two qubit gates using Quantum Shannon Decomposition, + + Decomposes a unitary matrix into one and two qubit gates using Quantum Shannon Decomposition, based on the Block ZXZ-Decomposition. - This decomposition is described in Shende et al. \[1]. + This decomposition is described in Krol and Al-Ars \[2] and improves the method of Shende et al. \[1]. ```text - ┌───┐ ┌───┐ ┌───┐ ┌───┐ - ─┤ ├─ ───────┤ Rz├─────┤ Ry├─────┤ Rz├───── - │ │ ≃ ┌───┐└─┬─┘┌───┐└─┬─┘┌───┐└─┬─┘┌───┐ - /─┤ ├─ /─┤ ├──□──┤ ├──□──┤ ├──□──┤ ├ - └───┘ └───┘ └───┘ └───┘ └───┘ + ┌───┐ ┌───┐ ┌───┐ + ─┤ ├─ ────□──┤ H ├──□──┤ H ├──□── + │ │ ≃ ┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐ + /─┤ ├─ ──┤ C ├─────┤ B ├─────┤ A ├ + └───┘ └───┘ └───┘ └───┘ ``` - The number of [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s generated with the decomposition without optimizations is: + The number of [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s generated with the decomposition without optimizations is the same as the unoptimized method in \[1]: $$ \frac{9}{16} 4^n - \frac{3}{2} 2^n $$ - If `opt_a1 = True`, the default, the CX count is reduced by: + If `opt_a1 = True`, the CX count is reduced, improving \[1], by: $$ -\frac{1}{3} 4^{n - 2} - 1. +\frac{2}{3} (4^{n - 2} - 1). $$ - If `opt_a2 = True`, the default, the CX count is reduced by: + Saving two [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s instead of one in each step of the recursion. + + If `opt_a2 = True`, the CX count is reduced, as in \[1], by: $$ 4^{n-2} - 1. +$$ + + Hence, the number of [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s generated with the decomposition with optimizations is + +$$ +\frac{22}{48} 4^n - \frac{3}{2} 2^n + \frac{5}{3}. $$ **Parameters** * **mat** (*np.ndarray*) – unitary matrix to decompose - * **opt\_a1** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – whether to try optimization A.1 from Shende et al. \[1]. This should eliminate 1 `cx` per call. If `True`, [`CZGate`](qiskit.circuit.library.CZGate "qiskit.circuit.library.CZGate")s are left in the output. If desired these can be further decomposed to [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s. - * **opt\_a2** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – whether to try optimization A.2 from Shende et al. \[1]. This decomposes two qubit unitaries into a diagonal gate and a two cx unitary and reduces overall cx count by $4^{n-2} - 1$. + * **opt\_a1** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)") *| None*) – whether to try optimization A.1 from \[1, 2]. This should eliminate 2 `cx` per call. + * **opt\_a2** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)") *| None*) – whether to try optimization A.2 from \[1, 2]. This decomposes two qubit unitaries into a diagonal gate and a two `cx` unitary and reduces overall `cx` count by $4^{n-2} - 1$. This optimization should not be done if the original unitary is controlled. * **decomposer\_1q** (*Callable\[\[np.ndarray],* [*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*] | None*) – optional 1Q decomposer. If None, uses [`OneQubitEulerDecomposer`](qiskit.synthesis.OneQubitEulerDecomposer "qiskit.synthesis.OneQubitEulerDecomposer"). * **decomposer\_2q** (*Callable\[\[np.ndarray],* [*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*] | None*) – optional 2Q decomposer. If None, uses [`TwoQubitBasisDecomposer`](qiskit.synthesis.TwoQubitBasisDecomposer "qiskit.synthesis.TwoQubitBasisDecomposer"). @@ -796,6 +804,7 @@ $$ **References** 1. Shende, Bullock, Markov, *Synthesis of Quantum Logic Circuits*, [arXiv:0406176 \[quant-ph\]](https://arxiv.org/abs/quant-ph/0406176) + 2. Krol, Al-Ars, *Beyond Quantum Shannon: Circuit Construction for General n-Qubit Gates Based on Block ZXZ-Decomposition*, [arXiv:2403.13692](https://arxiv.org/abs/2403.13692) The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.unitary.aqc`](qiskit.synthesis.unitary.aqc#module-qiskit.synthesis.unitary.aqc "qiskit.synthesis.unitary.aqc"). @@ -839,7 +848,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcmt\_vchain - + Synthesize MCMT using a V-chain. This uses a chain of CCX gates, using `num_ctrl_qubits - 1` auxiliary qubits. @@ -865,10 +874,53 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u **Parameters** - * **gate** ([*Gate*](qiskit.circuit.Gate "qiskit.circuit.Gate")) – - * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – - * **num\_target\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – - * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *| None*) – + * **gate** ([*Gate*](qiskit.circuit.Gate "qiskit.circuit.Gate")) – Base gate to be applied to the targets. + * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – Number of control qubits. + * **num\_target\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – Number of target qubits. + * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *| None*) – Optional control state as an integer. + + **Returns** + + The synthesized circuit for the MCMT gate. + + **Return type** + + [QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") + + +### synth\_mcmt\_xgate + + + Synthesize MCMT X gate. + + This uses a special circuit structure that is efficient for MCMT X gates. It does not require any ancillary qubits and benefits from efficient MCX decompositions. + + E.g. a 3-control, 3-target X gate will be synthesized as: + + ```python + q_0: ─────────────■──────────── + | + q_1: ─────────────■──────────── + | + q_2: ─────────────■──────────── + ┌─┴─┐ + q_3: ────────■──┤ X ├──■─────── + ┌─┴─┐└───┘┌─┴─┐ + q_4: ───■──┤ X ├─────┤ X ├──■── + ┌─┴─┐└───┘ └───┘┌─┴─┐ + q_5: ─┤ X ├───────────────┤ X ├ + └───┘ └───┘ + ``` + + **Parameters** + + * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – Number of control qubits. + * **num\_target\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – Number of target qubits. + * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)") *| None*) – Optional control state as an integer. + + **Returns** + + The synthesized circuit for the MCMT X gate. **Return type** @@ -877,8 +929,8 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_1\_clean\_kg24 - - Synthesize a multi-controlled X gate with $k$ controls using $1$ clean ancillary qubit producing a circuit with $2k-3$ Toffoli gates and depth $O(k)$ as described in Sec. 5.1 of \[1]. + + Synthesize a multi-controlled X gate with $k$ controls using $1$ clean ancillary qubit producing a circuit with $2k-3$ Toffoli gates or $6k-6$ CX gates and depth $O(k)$ as described in Sec. 5.1 of \[1]. **Parameters** @@ -903,8 +955,8 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_1\_dirty\_kg24 - - Synthesize a multi-controlled X gate with $k$ controls using $1$ dirty ancillary qubit producing a circuit with $4k-8$ Toffoli gates and depth $O(k)$ as described in Sec. 5.3 of \[1]. + + Synthesize a multi-controlled X gate with $k$ controls using $1$ dirty ancillary qubit producing a circuit with $4k-8$ Toffoli gates or $12k-18$ CX gates and depth $O(k)$ as described in Sec. 5.3 of \[1]. **Parameters** @@ -929,8 +981,8 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_2\_clean\_kg24 - - Synthesize a multi-controlled X gate with $k$ controls using $2$ clean ancillary qubits producing a circuit with $2k-3$ Toffoli gates and depth $O(\log(k))$ as described in Sec. 5.2 of \[1]. + + Synthesize a multi-controlled X gate with $k$ controls using $2$ clean ancillary qubits producing a circuit with $2k-3$ Toffoli gates or $6k-6$ CX gates and depth $O(\log(k))$ as described in Sec. 5.2 of \[1]. **Parameters** @@ -955,8 +1007,8 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_2\_dirty\_kg24 - - Synthesize a multi-controlled X gate with $k$ controls using $2$ dirty ancillary qubits producing a circuit with $4k-8$ Toffoli gates and depth $O(\log(k))$ as described in Sec. 5.4 of \[1]. + + Synthesize a multi-controlled X gate with $k$ controls using $2$ dirty ancillary qubits producing a circuit with $4k-8$ Toffoli gates or $12k-18$ CX gates and depth $O(\log(k))$ as described in Sec. 5.4 of \[1]. **Parameters** @@ -981,7 +1033,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_n\_dirty\_i15 - + Synthesize a multi-controlled X gate with $k$ controls based on the paper by Iten et al. \[1]. For $k\ge 4$ the method uses $k - 2$ dirty ancillary qubits, producing a circuit with $2 * k - 1$ qubits and at most $8 * k - 6$ CX gates. For $k\le 3$ explicit efficient circuits are used instead. @@ -1007,7 +1059,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_n\_clean\_m15 - + Synthesize a multi-controlled X gate with $k$ controls using $k - 2$ clean ancillary qubits with producing a circuit with $2 * k - 1$ qubits and at most $6 * k - 6$ CX gates, by Maslov \[1]. **Parameters** @@ -1029,7 +1081,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_1\_clean\_b95 - + Synthesize a multi-controlled X gate with $k$ controls using a single clean ancillary qubit producing a circuit with $k + 2$ qubits and at most $16 * k - 24$ CX gates, by \[1], \[2]. **Parameters** @@ -1052,7 +1104,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_mcx\_noaux\_v24 - + Synthesize a multi-controlled X gate with $k$ controls based on the implementation for MCPhaseGate. In turn, the MCPhase gate uses the decomposition for multi-controlled special unitaries described in \[1]. @@ -1076,9 +1128,33 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u 1. Vale et. al., *Circuit Decomposition of Multicontrolled Special Unitary Single-Qubit Gates*, IEEE TCAD 43(3) (2024), [arXiv:2302.06377](https://arxiv.org/abs/2302.06377) +### synth\_mcx\_noaux\_hp24 + + + Synthesize a multi-controlled X gate with $k$ controls based on the work by Huang and Palsberg. + + Produces a quantum circuit with $k + 1$ qubits. The number of CX-gates is linear in $k$. + + **Parameters** + + **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – The number of control qubits. + + **Returns** + + The synthesized quantum circuit. + + **Return type** + + [*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") + + **References** + + 1. Huang and Palsberg, *Compiling Conditional Quantum Gates without Using Helper Qubits*, PLDI (2024), \<[https://dl.acm.org/doi/10.1145/3656436](https://dl.acm.org/doi/10.1145/3656436)>\`\_ + + ### synth\_mcx\_gray\_code - + Synthesize a multi-controlled X gate with $k$ controls using the Gray code. Produces a quantum circuit with $k + 1$ qubits. This method produces exponentially many CX gates and should be used only for small values of $k$. @@ -1098,7 +1174,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_c3x - + Efficient synthesis of 3-controlled X-gate. **Return type** @@ -1108,7 +1184,7 @@ The Approximate Quantum Compiler is available as the module [`qiskit.synthesis.u ### synth\_c4x - + Efficient synthesis of 4-controlled X-gate. **Return type** diff --git a/docs/api/qiskit/dev/transpiler.mdx b/docs/api/qiskit/dev/transpiler.mdx index 62f22ab8068..83d16f536c2 100644 --- a/docs/api/qiskit/dev/transpiler.mdx +++ b/docs/api/qiskit/dev/transpiler.mdx @@ -18,6 +18,13 @@ python_api_name: qiskit.transpiler ## Overview + + If you are already familiar with the concepts of circuit transpilation / compilation, you may want to skip ahead to: + + * [Descriptions of the preconfigured pass managers](#transpiler-preset). This includes descriptions of the stages, and of all the available built-in plugins. + * [Documentation on building a custom transpiler pass](#transpiler-custom-passes). + + Transpilation is the process of rewriting a given input circuit to match the topology of a specific quantum device, and/or to optimize the circuit for execution on quantum systems. Most circuits must undergo a series of transformations that make them compatible with a given target device, and optimize them to reduce the effects of noise on the resulting outcomes. Rewriting quantum circuits to match hardware constraints and optimizing for performance can be far from trivial. The flow of logic in the rewriting tool chain need not be linear, and can often have iterative sub-loops, conditional branches, and other complex behaviors. That being said, the standard compilation flow follows the structure given below: @@ -85,11 +92,28 @@ The preset transpiler pipelines can also be configured at a high level by settin The optimization level affects which implementations are used for a given stage by default, though this can be overridden by passing explicit `_method=""` arguments to [`generate_preset_pass_manager()`](qiskit.transpiler.generate_preset_pass_manager "qiskit.transpiler.generate_preset_pass_manager"). - - The preset pass managers almost always include stochastic, heuristic-based passes. If you need to ensure reproducibility of a compilation, pass a known integer to the `seed_transpiler` argument to the generator functions. + - This stochasticity arises because many of the problems the transpiler must solve are known to be non-polynomial in complexity, but transpilation must complete in a workable amount of time. - +### Reproducibility of the preset pipelines + +Quantum compilation often involves solving problems that are knownn to be non-polynomial in complexity, and so are intractable to globally optimize. In these cases, stochastic and heuristic algorithms are often more appropriate. This leads to problems of reproducibility, however. + +The preset pass managers almost always include stochastic, heuristic-based passes. If you need to ensure reproducibility of a compilation, pass a known integer to the `seed_transpiler` argument of the generator functions. + +All built-in plugins to Qiskit are required to produce their analyses and modify the [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") in deterministic ways if they randomization (if any) is seeded, so that a compilation can be repeated later. There are limits on this: + +* All built-in passes with stochastic components must provide a way to seed the randomization, and if seeded, they must respect the rules of deterministic output. +* All built-in passes without stochastic components must respect the rules of deterministic output for identical input. It is permissible to keep a cache for efficiency, but given the same set of inputs, the pass’s returns must be the same if the pass is called multiple times, unless something outside the pass’s control mutates one of its inputs in-place (for example, the [`BasisTranslator`](qiskit.transpiler.passes.BasisTranslator "qiskit.transpiler.passes.BasisTranslator") uses the [`SessionEquivalenceLibrary`](circuit#qiskit.circuit.SessionEquivalenceLibrary "qiskit.circuit.SessionEquivalenceLibrary") by default in the preset pass managers, and it is not a bug to get different results if new entries are added to the equivalence library). An “output” is anything the pass writes out for further consumption; this can be the explicit `return` value from the pass, but also includes properties intended for later consumption in the [`PropertySet`](qiskit.passmanager.PropertySet "qiskit.passmanager.PropertySet"). +* The output of a pass should be deterministic on a given machine for a given version of Qiskit and a frozen environment, no matter how many threads are available for the pass. Many built-in Qiskit passes use threaded concurrency, and they are not permitted to have different behavior based on the number of threads. +* The output of a pass for a fixed seed is not required to be equal if some part of the underlying Python environment changes (such as a dependent package updating), or if the system mathematical libraries change (such as a different implementation of BLAS is available). +* The output of a pass for a fixed seed is not required to be equal between operating systems (although typically, it is the implementation of the system mathematical library that is the root cause of operating-system-related differences). +* The output of a pass for a fixed seed is not required to be the same between two machines that have different CPU instructions available; it is expected that different implementations of core mathematical kernels may produce different behavior if different CPU instructions are available, such as fused multiply-add instructions having different rounding characteristics to two separate floating-point multiply and add instructions. +* The output of a pass for a fixed seed must be the same, regardless of the number of threads it is allowed to use, unless the user specifically opts out of this behavior. For example in the preset passmanagers, the Sabre layout and routing methods need to run the same number of trials by default, no matter if there is a single thread allowed or even more threads than trials, though this behavior can be explicitly overridden by setting the `QISKIT_SABRE_ALL_THREADS` environment variable to opt in to becoming sensitive to the thread count. +* All the above rules apply even between separate Python interpreter sessions, even when `PYTHONHASHSEED` has not been explicitly set. + +In general, a consumer of the [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") should be able to assume, after any combination of built-in, seeded if appropriate, Qiskit passes have run with fixed inputs, that the exact output of all `DAGCircuit()` methods is deterministic. This includes the order of output even of methods that do not make any promise about the order; while the semantics and precide order cannot be relied on, the determinism of it for fixed inputs can. + +Transpiler-pass authors should consult [Randomness and determinism](#transpiler-custom-passes-determinism) for a discussion of how to make a transpiler pass deterministic. ### Choosing preset stage implementations @@ -532,6 +556,8 @@ Explicitly schedule all operations using an “as late as possible” strategy. Explicitly schedule all operations using an “as soon as possible” strategy. This uses the [`ASAPScheduleAnalysis`](qiskit.transpiler.passes.ASAPScheduleAnalysis "qiskit.transpiler.passes.ASAPScheduleAnalysis") algorithm to decide where to place gates. + + ## Custom pass managers In addition to modifying preset pass managers, it is also possible to construct a pass manager to build an entirely custom pipeline for transforming input circuits. You can use the [`StagedPassManager`](qiskit.transpiler.StagedPassManager "qiskit.transpiler.StagedPassManager") class directly to do this. You can define arbitrary stage names and populate them with a [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") instance. For example, the following code creates a new [`StagedPassManager`](qiskit.transpiler.StagedPassManager "qiskit.transpiler.StagedPassManager") that has two stages, `init` and `translation`. @@ -565,6 +591,59 @@ There is no limit on the number of stages you can put in a [`StagedPassManager`] The [Stage generator functions](transpiler_preset#stage-generators) may be useful for the construction of custom [`StagedPassManager`](qiskit.transpiler.StagedPassManager "qiskit.transpiler.StagedPassManager") instances. They generate pass managers which provide common functionality used in many stages. For example, [`generate_embed_passmanager()`](transpiler_preset#qiskit.transpiler.preset_passmanagers.generate_embed_passmanager "qiskit.transpiler.preset_passmanagers.generate_embed_passmanager") generates a [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") to “embed” a selected initial [`Layout`](qiskit.transpiler.Layout "qiskit.transpiler.Layout") from a layout pass to the specified target device. + + +## Writing custom transpiler passes + +Qiskit is designed to be extended with custom, specialized transpiler passes. + +There are two types of transpiler pass: “analysis” passes ([`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.AnalysisPass")), which read a circuit and write global analysis properties into the `PropertySet`; and “transformation” passes ([`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.TransformationPass")), which either modify a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") in place, or return a new `DAGCircuit`. Historically, Qiskit attempted to strongly separate these two types. In modern Qiskit, however, it is rather common to include both analysis and modifications into one stand-alone [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.TransformationPass"), rather than attempt to split everything. If your pass is purely analysis-based, it is still appropriate to use [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.AnalysisPass"). + +### General principles of pass authorship + +If you want to modify or create a new [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit"), you must write a [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.TransformationPass"). If you only want to write into the `PropertySet` and not modify the [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit"), you should write an [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.AnalysisPass"). If you want to do both, write a [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.TransformationPass"). In both cases, the only required method is `BasePass.run()`, which is the meat of your pass. This should accept a single argument (other than `self`), `dag: DAGCircuit`. If a `TranspilerPass`, it should return a `DAGCircuit` (which can be the input, if modified in place), whereas if a [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.AnalysisPass"), it should return `None`. + +If your pass has an initializer, you must call `super().__init__()`. + +Typically, your pass should accept a [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") in its initializer, which describes the quantum hardware you are compiling for. Accepting “loose” constraints like a separate coupling map and list of basis gates is discouraged; the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") is more correctly descriptive of general heterogeneous hardware. + +During execution of a [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") pipeline, when the `run()` method of your pass is called, you can access the attribute `self.property_set` to get the current `PropertySet` state of the transpilation. You should read from and write to this in place. Your pass should clearly document what, if any, attributes in the property set that it reads from and writes to. + + + +### Randomness and determinism + +Quantum compilation often involves solving problems that are intractable to globally optimize. In these cases, stochastic and heuristic algorithms are often more appropriate. This leads to problems of reproducibility, however. + +There is no formal requirement for a custom pass to be deterministic under [the precise same set of rules](#transpiler-preset-determinism) that built-in Qiskit passes must follow. However, we **strongly** encourage you to follow these rules in your own passes; science thrives on reproducibility, and debugging is a nightmare when you can’t reproduce previously observed behavior. + +When writing a transpiler pass, you can rely on the following (representative, and non-exhaustive) examples being deterministic, even though the exact semantics of the ordering may not be fully specified, and passes should **not** rely on any particular order: + +* The order nodes are encountered in [`DAGCircuit.op_nodes()`](qiskit.dagcircuit.DAGCircuit#op_nodes "qiskit.dagcircuit.DAGCircuit.op_nodes"). By contrast, [`topological_op_nodes()`](qiskit.dagcircuit.DAGCircuit#topological_op_nodes "qiskit.dagcircuit.DAGCircuit.topological_op_nodes") by default includes an ordering key that makes its order entirely unaffected by the order of node removal/insertion, so is fully deterministic provided the same set of nodes with the same data-flow is specified, even if it was built up in a different order. +* The order edges are encountered in [`DAGCircuit.edges()`](qiskit.dagcircuit.DAGCircuit#edges "qiskit.dagcircuit.DAGCircuit.edges"). +* The order that runs are returned from [`DAGCircuit.collect_2q_runs()`](qiskit.dagcircuit.DAGCircuit#collect_2q_runs "qiskit.dagcircuit.DAGCircuit.collect_2q_runs"), and the exact order nodes in a run are encountered. +* The order that nodes are encountered in order-degenerate methods such as [`predecessors()`](qiskit.dagcircuit.DAGCircuit#predecessors "qiskit.dagcircuit.DAGCircuit.predecessors"), [`bfs_successors()`](qiskit.dagcircuit.DAGCircuit#bfs_successors "qiskit.dagcircuit.DAGCircuit.bfs_successors"), and so on. + +In general, the requirement is that **all the same circuit modifications are made, in exactly the same order**. For example, if nodes are to be added, contracted, or removed, the order of these modifications must be done in a deterministic order, and the replacements must be specified deterministically. + +Some tips for ensuring this include: + +* Be very careful when iterating over hash-based containers. Iteration over Python’s [`set`](https://docs.python.org/3/library/stdtypes.html#set "(in Python v3.13)") is non-deterministic due to hash-seed randomization. In Rust, iteration over the standard-library hash-based containers, including `hashbrown` equivalents with their default hashers is non-deterministic. + + + Iteration over Python’s [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)") *is* deterministic, and guaranteed to be in insertion order if there have been no removals, and arbitrary but still deterministic order if there have been deterministic removals. + + + In Python, if you need to create a [`set`](https://docs.python.org/3/library/stdtypes.html#set "(in Python v3.13)") and then iterate over it, consider instead using a [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)") with all the values being `None` as a substitute. Using a [`set`](https://docs.python.org/3/library/stdtypes.html#set "(in Python v3.13)") purely for membership testing is no trouble. + + In Rust, use `indexmap` and its structs `IndexMap` and `IndexSet` as replacements for `HashMap` and `HashSet`, respectively; they have similar deterministic-iteration properties to Python’s [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.13)"). + +* If your pass as stochastic components, ensure that you accept a `seed` input, and make your output pure if this is supplied as an integer. Typically this means storing the seed, and instantiating a new pRNG from this seed at the start of each call to `BasePass.run()`. + +* If using threaded parallelism, take care that your output is not dependent on the order that threads do their work or return their partial results. For example, if distributing work across a thread pool and collecting the results at the end, ensure that the output is arranged in a corresponding order to the input. In Python, functions like `concurrent.futures.ThreadPoolExecutor.map()` ensure this. Similarly, in Rust, `rayon`’s parallel iterators will collect their output in the same order as the input. + + Beware that parallel \_reductions\_, such as “apply a function to each item in this iterator, and choose the one that minimizes some metric”, are typically highly susceptible to threaded non-determinism, in the case of degeneracies in the metric. For example, if two items in the iterator produce non-equal output that nevertheless has the same comparison key, the one chosen in a threaded environment is not deterministic. To avoid this, apply a deterministic tie-breaker to lift the degeneracy, such as by enumerating the input and using the sequence number as a tie-breaking key, such that if two items have the same score, the one corresponding to an earlier input is reliably chosen. + ## Representing Quantum Computers To be able to compile a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") for a specific backend, the transpiler needs a specialized representation of that backend, including its constraints, instruction set, qubit properties, and more, to be able to compile and optimize effectively. While the [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") class defines an interface for querying and interacting with backends, its scope is larger than just the transpiler’s needs including managing job submission and potentially interfacing with remote services. The specific information needed by the transpiler is described by the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") class diff --git a/docs/api/qiskit/dev/transpiler_passes.mdx b/docs/api/qiskit/dev/transpiler_passes.mdx index cf763cf7b35..5dc81ac7b59 100644 --- a/docs/api/qiskit/dev/transpiler_passes.mdx +++ b/docs/api/qiskit/dev/transpiler_passes.mdx @@ -37,9 +37,10 @@ python_api_name: qiskit.transpiler.passes | | | | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | [`BasicSwap`](qiskit.transpiler.passes.BasicSwap "qiskit.transpiler.passes.BasicSwap")(\*args, \*\*kwargs) | Map (with minimum effort) a DAGCircuit onto a `coupling_map` adding swap gates. | +| [`Commuting2qGateRouter`](qiskit.transpiler.passes.Commuting2qGateRouter "qiskit.transpiler.passes.Commuting2qGateRouter")(\*args, \*\*kwargs) | A class to swap route one or more commuting gates to the coupling map. | +| [`LayoutTransformation`](qiskit.transpiler.passes.LayoutTransformation "qiskit.transpiler.passes.LayoutTransformation")(\*args, \*\*kwargs) | Adds a Swap circuit for a given (partial) permutation to the circuit. | | [`LookaheadSwap`](qiskit.transpiler.passes.LookaheadSwap "qiskit.transpiler.passes.LookaheadSwap")(\*args, \*\*kwargs) | Map input circuit onto a backend topology via insertion of SWAPs. | | [`SabreSwap`](qiskit.transpiler.passes.SabreSwap "qiskit.transpiler.passes.SabreSwap")(\*args, \*\*kwargs) | Map input circuit onto a backend topology via insertion of SWAPs. | -| [`Commuting2qGateRouter`](qiskit.transpiler.passes.Commuting2qGateRouter "qiskit.transpiler.passes.Commuting2qGateRouter")(\*args, \*\*kwargs) | A class to swap route one or more commuting gates to the coupling map. | | [`StarPreRouting`](qiskit.transpiler.passes.StarPreRouting "qiskit.transpiler.passes.StarPreRouting")(\*args, \*\*kwargs) | Run star to linear pre-routing | ## Basis Change @@ -56,58 +57,61 @@ python_api_name: qiskit.transpiler.passes | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`Optimize1qGates`](qiskit.transpiler.passes.Optimize1qGates "qiskit.transpiler.passes.Optimize1qGates")(\*args, \*\*kwargs) | Optimize chains of single-qubit u1, u2, u3 gates by combining them into a single gate. | -| [`Optimize1qGatesDecomposition`](qiskit.transpiler.passes.Optimize1qGatesDecomposition "qiskit.transpiler.passes.Optimize1qGatesDecomposition")(\*args, \*\*kwargs) | Optimize chains of single-qubit gates by combining them into a single gate. | | [`Collect1qRuns`](qiskit.transpiler.passes.Collect1qRuns "qiskit.transpiler.passes.Collect1qRuns")(\*args, \*\*kwargs) | Collect one-qubit subcircuits. | | [`Collect2qBlocks`](qiskit.transpiler.passes.Collect2qBlocks "qiskit.transpiler.passes.Collect2qBlocks")(\*args, \*\*kwargs) | Collect two-qubit subcircuits. | -| [`CollectMultiQBlocks`](qiskit.transpiler.passes.CollectMultiQBlocks "qiskit.transpiler.passes.CollectMultiQBlocks")(\*args, \*\*kwargs) | Collect sequences of uninterrupted gates acting on groups of qubits. | | [`CollectAndCollapse`](qiskit.transpiler.passes.CollectAndCollapse "qiskit.transpiler.passes.CollectAndCollapse")(\*args, \*\*kwargs) | A general transpiler pass to collect and to consolidate blocks of nodes in a circuit. | -| [`CollectLinearFunctions`](qiskit.transpiler.passes.CollectLinearFunctions "qiskit.transpiler.passes.CollectLinearFunctions")(\*args, \*\*kwargs) | Collect blocks of linear gates ([`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate") and [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate") gates) and replaces them by linear functions ([`LinearFunction`](qiskit.circuit.library.LinearFunction "qiskit.circuit.library.LinearFunction")). | | [`CollectCliffords`](qiskit.transpiler.passes.CollectCliffords "qiskit.transpiler.passes.CollectCliffords")(\*args, \*\*kwargs) | Collects blocks of Clifford gates and replaces them by a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") object. | -| [`ConsolidateBlocks`](qiskit.transpiler.passes.ConsolidateBlocks "qiskit.transpiler.passes.ConsolidateBlocks")(\*args, \*\*kwargs) | Replace each block of consecutive gates by a single Unitary node. | -| [`InverseCancellation`](qiskit.transpiler.passes.InverseCancellation "qiskit.transpiler.passes.InverseCancellation")(\*args, \*\*kwargs) | Cancel specific Gates which are inverses of each other when they occur back-to- back. | +| [`CollectLinearFunctions`](qiskit.transpiler.passes.CollectLinearFunctions "qiskit.transpiler.passes.CollectLinearFunctions")(\*args, \*\*kwargs) | Collect blocks of linear gates ([`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate") and [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate") gates) and replaces them by linear functions ([`LinearFunction`](qiskit.circuit.library.LinearFunction "qiskit.circuit.library.LinearFunction")). | +| [`CollectMultiQBlocks`](qiskit.transpiler.passes.CollectMultiQBlocks "qiskit.transpiler.passes.CollectMultiQBlocks")(\*args, \*\*kwargs) | Collect sequences of uninterrupted gates acting on groups of qubits. | | [`CommutationAnalysis`](qiskit.transpiler.passes.CommutationAnalysis "qiskit.transpiler.passes.CommutationAnalysis")(\*args, \*\*kwargs) | Analysis pass to find commutation relations between DAG nodes. | | [`CommutativeCancellation`](qiskit.transpiler.passes.CommutativeCancellation "qiskit.transpiler.passes.CommutativeCancellation")(\*args, \*\*kwargs) | Cancel the redundant (self-adjoint) gates through commutation relations. | | [`CommutativeInverseCancellation`](qiskit.transpiler.passes.CommutativeInverseCancellation "qiskit.transpiler.passes.CommutativeInverseCancellation")(\*args, \*\*kwargs) | Cancel pairs of inverse gates exploiting commutation relations. | +| [`ConsolidateBlocks`](qiskit.transpiler.passes.ConsolidateBlocks "qiskit.transpiler.passes.ConsolidateBlocks")(\*args, \*\*kwargs) | Replace each block of consecutive gates by a single Unitary node. | +| [`ContractIdleWiresInControlFlow`](qiskit.transpiler.passes.ContractIdleWiresInControlFlow "qiskit.transpiler.passes.ContractIdleWiresInControlFlow")(\*args, \*\*kwargs) | Remove idle qubits from control-flow operations of a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit"). | +| [`ElidePermutations`](qiskit.transpiler.passes.ElidePermutations "qiskit.transpiler.passes.ElidePermutations")(\*args, \*\*kwargs) | Remove permutation operations from a pre-layout circuit | +| [`HoareOptimizer`](qiskit.transpiler.passes.HoareOptimizer "qiskit.transpiler.passes.HoareOptimizer")(\*args, \*\*kwargs) | This is a transpiler pass using Hoare logic circuit optimization. | +| [`InverseCancellation`](qiskit.transpiler.passes.InverseCancellation "qiskit.transpiler.passes.InverseCancellation")(\*args, \*\*kwargs) | Cancel specific Gates which are inverses of each other when they occur back-to- back. | +| [`Optimize1qGates`](qiskit.transpiler.passes.Optimize1qGates "qiskit.transpiler.passes.Optimize1qGates")(\*args, \*\*kwargs) | Optimize chains of single-qubit u1, u2, u3 gates by combining them into a single gate. | +| [`Optimize1qGatesDecomposition`](qiskit.transpiler.passes.Optimize1qGatesDecomposition "qiskit.transpiler.passes.Optimize1qGatesDecomposition")(\*args, \*\*kwargs) | Optimize chains of single-qubit gates by combining them into a single gate. | | [`Optimize1qGatesSimpleCommutation`](qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation "qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation")(\*args, \*\*kwargs) | Optimizes 1Q gate strings interrupted by 2Q gates by commuting the components and resynthesizing the results. | +| [`OptimizeAnnotated`](qiskit.transpiler.passes.OptimizeAnnotated "qiskit.transpiler.passes.OptimizeAnnotated")(\*args, \*\*kwargs) | Optimization pass on circuits with annotated operations. | +| [`OptimizeCliffordT`](qiskit.transpiler.passes.OptimizeCliffordT "qiskit.transpiler.passes.OptimizeCliffordT")(\*args, \*\*kwargs) | An optimization pass for Clifford+T circuits. | +| [`OptimizeCliffords`](qiskit.transpiler.passes.OptimizeCliffords "qiskit.transpiler.passes.OptimizeCliffords")(\*args, \*\*kwargs) | Combine consecutive Cliffords over the same qubits. | +| [`OptimizeSwapBeforeMeasure`](qiskit.transpiler.passes.OptimizeSwapBeforeMeasure "qiskit.transpiler.passes.OptimizeSwapBeforeMeasure")(\*args, \*\*kwargs) | Remove the swaps followed by measurement (and adapt the measurement). | | [`RemoveDiagonalGatesBeforeMeasure`](qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure "qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure")(\*args, \*\*kwargs) | Remove diagonal gates (including diagonal 2Q gates) before a measurement. | -| [`RemoveResetInZeroState`](qiskit.transpiler.passes.RemoveResetInZeroState "qiskit.transpiler.passes.RemoveResetInZeroState")(\*args, \*\*kwargs) | Remove reset gate when the qubit is in zero state. | | [`RemoveFinalReset`](qiskit.transpiler.passes.RemoveFinalReset "qiskit.transpiler.passes.RemoveFinalReset")(\*args, \*\*kwargs) | Remove reset when it is the final instruction on a qubit wire. | -| [`HoareOptimizer`](qiskit.transpiler.passes.HoareOptimizer "qiskit.transpiler.passes.HoareOptimizer")(\*args, \*\*kwargs) | This is a transpiler pass using Hoare logic circuit optimization. | -| [`TemplateOptimization`](qiskit.transpiler.passes.TemplateOptimization "qiskit.transpiler.passes.TemplateOptimization")(\*args, \*\*kwargs) | Class for the template optimization pass. | +| [`RemoveIdentityEquivalent`](qiskit.transpiler.passes.RemoveIdentityEquivalent "qiskit.transpiler.passes.RemoveIdentityEquivalent")(\*args, \*\*kwargs) | Remove gates with negligible effects. | +| [`RemoveResetInZeroState`](qiskit.transpiler.passes.RemoveResetInZeroState "qiskit.transpiler.passes.RemoveResetInZeroState")(\*args, \*\*kwargs) | Remove reset gate when the qubit is in zero state. | | [`ResetAfterMeasureSimplification`](qiskit.transpiler.passes.ResetAfterMeasureSimplification "qiskit.transpiler.passes.ResetAfterMeasureSimplification")(\*args, \*\*kwargs) | This pass replaces reset after measure with a conditional X gate. | -| [`OptimizeCliffords`](qiskit.transpiler.passes.OptimizeCliffords "qiskit.transpiler.passes.OptimizeCliffords")(\*args, \*\*kwargs) | Combine consecutive Cliffords over the same qubits. | -| [`ElidePermutations`](qiskit.transpiler.passes.ElidePermutations "qiskit.transpiler.passes.ElidePermutations")(\*args, \*\*kwargs) | Remove permutation operations from a pre-layout circuit | -| [`OptimizeAnnotated`](qiskit.transpiler.passes.OptimizeAnnotated "qiskit.transpiler.passes.OptimizeAnnotated")(\*args, \*\*kwargs) | Optimization pass on circuits with annotated operations. | | [`Split2QUnitaries`](qiskit.transpiler.passes.Split2QUnitaries "qiskit.transpiler.passes.Split2QUnitaries")(\*args, \*\*kwargs) | Attempt to splits two-qubit unitaries in a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") into two single-qubit gates. | -| [`RemoveIdentityEquivalent`](qiskit.transpiler.passes.RemoveIdentityEquivalent "qiskit.transpiler.passes.RemoveIdentityEquivalent")(\*args, \*\*kwargs) | Remove gates with negligible effects. | -| [`ContractIdleWiresInControlFlow`](qiskit.transpiler.passes.ContractIdleWiresInControlFlow "qiskit.transpiler.passes.ContractIdleWiresInControlFlow")(\*args, \*\*kwargs) | Remove idle qubits from control-flow operations of a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit"). | +| [`TemplateOptimization`](qiskit.transpiler.passes.TemplateOptimization "qiskit.transpiler.passes.TemplateOptimization")(\*args, \*\*kwargs) | Class for the template optimization pass. | ## Scheduling | | | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| [`TimeUnitConversion`](qiskit.transpiler.passes.TimeUnitConversion "qiskit.transpiler.passes.TimeUnitConversion")(\*args, \*\*kwargs) | Choose a time unit to be used in the following time-aware passes, and make all circuit time units consistent with that. | | [`ALAPScheduleAnalysis`](qiskit.transpiler.passes.ALAPScheduleAnalysis "qiskit.transpiler.passes.ALAPScheduleAnalysis")(\*args, \*\*kwargs) | ALAP Scheduling pass, which schedules the **stop** time of instructions as late as possible. | | [`ASAPScheduleAnalysis`](qiskit.transpiler.passes.ASAPScheduleAnalysis "qiskit.transpiler.passes.ASAPScheduleAnalysis")(\*args, \*\*kwargs) | ASAP Scheduling pass, which schedules the start time of instructions as early as possible. | -| [`ContextAwareDynamicalDecoupling`](qiskit.transpiler.passes.ContextAwareDynamicalDecoupling "qiskit.transpiler.passes.ContextAwareDynamicalDecoupling")(\*args, \*\*kwargs) | Implement an X-sequence dynamical decoupling considering the gate- and qubit-context. | -| [`PadDynamicalDecoupling`](qiskit.transpiler.passes.PadDynamicalDecoupling "qiskit.transpiler.passes.PadDynamicalDecoupling")(\*args, \*\*kwargs) | Dynamical decoupling insertion pass. | -| [`PadDelay`](qiskit.transpiler.passes.PadDelay "qiskit.transpiler.passes.PadDelay")(\*args, \*\*kwargs) | Padding idle time with Delay instructions. | | [`ConstrainedReschedule`](qiskit.transpiler.passes.ConstrainedReschedule "qiskit.transpiler.passes.ConstrainedReschedule")(\*args, \*\*kwargs) | Rescheduler pass that updates node start times to conform to the hardware alignments. | +| [`ContextAwareDynamicalDecoupling`](qiskit.transpiler.passes.ContextAwareDynamicalDecoupling "qiskit.transpiler.passes.ContextAwareDynamicalDecoupling")(\*args, \*\*kwargs) | Implement an X-sequence dynamical decoupling considering the gate- and qubit-context. | | [`InstructionDurationCheck`](qiskit.transpiler.passes.InstructionDurationCheck "qiskit.transpiler.passes.InstructionDurationCheck")(\*args, \*\*kwargs) | Duration validation pass for reschedule. | +| [`PadDelay`](qiskit.transpiler.passes.PadDelay "qiskit.transpiler.passes.PadDelay")(\*args, \*\*kwargs) | Padding idle time with Delay instructions. | +| [`PadDynamicalDecoupling`](qiskit.transpiler.passes.PadDynamicalDecoupling "qiskit.transpiler.passes.PadDynamicalDecoupling")(\*args, \*\*kwargs) | Dynamical decoupling insertion pass. | | [`SetIOLatency`](qiskit.transpiler.passes.SetIOLatency "qiskit.transpiler.passes.SetIOLatency")(\*args, \*\*kwargs) | Set IOLatency information to the input circuit. | +| [`TimeUnitConversion`](qiskit.transpiler.passes.TimeUnitConversion "qiskit.transpiler.passes.TimeUnitConversion")(\*args, \*\*kwargs) | Choose a time unit to be used in the following time-aware passes, and make all circuit time units consistent with that. | ## Circuit Analysis | | | | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`Width`](qiskit.transpiler.passes.Width "qiskit.transpiler.passes.Width")(\*args, \*\*kwargs) | Calculate the width of a DAG circuit. | -| [`Depth`](qiskit.transpiler.passes.Depth "qiskit.transpiler.passes.Depth")(\*args, \*\*kwargs) | Calculate the depth of a DAG circuit. | -| [`Size`](qiskit.transpiler.passes.Size "qiskit.transpiler.passes.Size")(\*args, \*\*kwargs) | Calculate the size of a DAG circuit. | | [`CountOps`](qiskit.transpiler.passes.CountOps "qiskit.transpiler.passes.CountOps")(\*args, \*\*kwargs) | Count the operations in a DAG circuit. | | [`CountOpsLongestPath`](qiskit.transpiler.passes.CountOpsLongestPath "qiskit.transpiler.passes.CountOpsLongestPath")(\*args, \*\*kwargs) | Count the operations on the longest path in a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit"). | -| [`NumTensorFactors`](qiskit.transpiler.passes.NumTensorFactors "qiskit.transpiler.passes.NumTensorFactors")(\*args, \*\*kwargs) | Calculate the number of tensor factors of a DAG circuit. | | [`DAGLongestPath`](qiskit.transpiler.passes.DAGLongestPath "qiskit.transpiler.passes.DAGLongestPath")(\*args, \*\*kwargs) | Return the longest path in a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") as a list of [`DAGOpNode`](qiskit.dagcircuit.DAGOpNode "qiskit.dagcircuit.DAGOpNode")s, [`DAGInNode`](qiskit.dagcircuit.DAGInNode "qiskit.dagcircuit.DAGInNode")s, and [`DAGOutNode`](qiskit.dagcircuit.DAGOutNode "qiskit.dagcircuit.DAGOutNode")s. | +| [`Depth`](qiskit.transpiler.passes.Depth "qiskit.transpiler.passes.Depth")(\*args, \*\*kwargs) | Calculate the depth of a DAG circuit. | +| [`NumTensorFactors`](qiskit.transpiler.passes.NumTensorFactors "qiskit.transpiler.passes.NumTensorFactors")(\*args, \*\*kwargs) | Calculate the number of tensor factors of a DAG circuit. | +| [`ResourceEstimation`](qiskit.transpiler.passes.ResourceEstimation "qiskit.transpiler.passes.ResourceEstimation")(\*args, \*\*kwargs) | Automatically require analysis passes for resource estimation. | +| [`Size`](qiskit.transpiler.passes.Size "qiskit.transpiler.passes.Size")(\*args, \*\*kwargs) | Calculate the size of a DAG circuit. | +| [`Width`](qiskit.transpiler.passes.Width "qiskit.transpiler.passes.Width")(\*args, \*\*kwargs) | Calculate the width of a DAG circuit. | ## Synthesis @@ -115,11 +119,11 @@ The synthesis transpiler plugin documentation can be found in the [`qiskit.trans | | | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`UnitarySynthesis`](qiskit.transpiler.passes.UnitarySynthesis "qiskit.transpiler.passes.UnitarySynthesis")(\*args, \*\*kwargs) | Synthesize gates according to their basis gates. | -| [`LinearFunctionsToPermutations`](qiskit.transpiler.passes.LinearFunctionsToPermutations "qiskit.transpiler.passes.LinearFunctionsToPermutations")(\*args, \*\*kwargs) | Promotes linear functions to permutations when possible. | -| [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis")(\*args, \*\*kwargs) | Synthesize higher-level objects and unroll custom definitions. | | [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.HLSConfig")(\[use\_default\_on\_unspecified, ...]) | The high-level-synthesis config allows to specify a list of "methods" used by [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis") transformation pass to synthesize different types of higher-level objects. | +| [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.HighLevelSynthesis")(\*args, \*\*kwargs) | Synthesize higher-level objects and unroll custom definitions. | +| [`LinearFunctionsToPermutations`](qiskit.transpiler.passes.LinearFunctionsToPermutations "qiskit.transpiler.passes.LinearFunctionsToPermutations")(\*args, \*\*kwargs) | Promotes linear functions to permutations when possible. | | [`SolovayKitaev`](qiskit.transpiler.passes.SolovayKitaev "qiskit.transpiler.passes.SolovayKitaev")(\*args, \*\*kwargs) | Approximately decompose 1q gates to a discrete basis using the Solovay-Kitaev algorithm. | +| [`UnitarySynthesis`](qiskit.transpiler.passes.UnitarySynthesis "qiskit.transpiler.passes.UnitarySynthesis")(\*args, \*\*kwargs) | Synthesize gates according to their basis gates. | ## Post Layout @@ -133,18 +137,19 @@ These are post qubit selection. | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| [`CheckMap`](qiskit.transpiler.passes.CheckMap "qiskit.transpiler.passes.CheckMap")(\*args, \*\*kwargs) | Check if a DAG circuit is already mapped to a coupling map. | +| [`BarrierBeforeFinalMeasurements`](qiskit.transpiler.passes.BarrierBeforeFinalMeasurements "qiskit.transpiler.passes.BarrierBeforeFinalMeasurements")(\*args, \*\*kwargs) | Add a barrier before final measurements. | | [`CheckGateDirection`](qiskit.transpiler.passes.CheckGateDirection "qiskit.transpiler.passes.CheckGateDirection")(\*args, \*\*kwargs) | Check if the two-qubit gates follow the right direction with respect to the coupling map. | +| [`CheckMap`](qiskit.transpiler.passes.CheckMap "qiskit.transpiler.passes.CheckMap")(\*args, \*\*kwargs) | Check if a DAG circuit is already mapped to a coupling map. | +| [`ContainsInstruction`](qiskit.transpiler.passes.ContainsInstruction "qiskit.transpiler.passes.ContainsInstruction")(\*args, \*\*kwargs) | An analysis pass to detect if the DAG contains a specific instruction. | +| [`DAGFixedPoint`](qiskit.transpiler.passes.DAGFixedPoint "qiskit.transpiler.passes.DAGFixedPoint")(\*args, \*\*kwargs) | Check if the DAG has reached a fixed point. | +| [`Error`](qiskit.transpiler.passes.Error "qiskit.transpiler.passes.Error")(\*args, \*\*kwargs) | Error pass to be called when an error happens. | +| [`FilterOpNodes`](qiskit.transpiler.passes.FilterOpNodes "qiskit.transpiler.passes.FilterOpNodes")(\*args, \*\*kwargs) | Remove all operations that match a filter function | +| [`FixedPoint`](qiskit.transpiler.passes.FixedPoint "qiskit.transpiler.passes.FixedPoint")(\*args, \*\*kwargs) | Check if a property reached a fixed point. | | [`GateDirection`](qiskit.transpiler.passes.GateDirection "qiskit.transpiler.passes.GateDirection")(\*args, \*\*kwargs) | Modify asymmetric gates to match the hardware coupling direction. | +| [`GatesInBasis`](qiskit.transpiler.passes.GatesInBasis "qiskit.transpiler.passes.GatesInBasis")(\*args, \*\*kwargs) | Check if all gates in a DAG are in a given set of gates | | [`MergeAdjacentBarriers`](qiskit.transpiler.passes.MergeAdjacentBarriers "qiskit.transpiler.passes.MergeAdjacentBarriers")(\*args, \*\*kwargs) | Return a circuit with any adjacent barriers merged together. | +| [`MinimumPoint`](qiskit.transpiler.passes.MinimumPoint "qiskit.transpiler.passes.MinimumPoint")(\*args, \*\*kwargs) | Check if the DAG has reached a relative semi-stable point over previous runs | | [`RemoveBarriers`](qiskit.transpiler.passes.RemoveBarriers "qiskit.transpiler.passes.RemoveBarriers")(\*args, \*\*kwargs) | Return a circuit with any barrier removed. | -| [`BarrierBeforeFinalMeasurements`](qiskit.transpiler.passes.BarrierBeforeFinalMeasurements "qiskit.transpiler.passes.BarrierBeforeFinalMeasurements")(\*args, \*\*kwargs) | Add a barrier before final measurements. | | [`RemoveFinalMeasurements`](qiskit.transpiler.passes.RemoveFinalMeasurements "qiskit.transpiler.passes.RemoveFinalMeasurements")(\*args, \*\*kwargs) | Remove final measurements and barriers at the end of a circuit. | -| [`DAGFixedPoint`](qiskit.transpiler.passes.DAGFixedPoint "qiskit.transpiler.passes.DAGFixedPoint")(\*args, \*\*kwargs) | Check if the DAG has reached a fixed point. | -| [`FixedPoint`](qiskit.transpiler.passes.FixedPoint "qiskit.transpiler.passes.FixedPoint")(\*args, \*\*kwargs) | Check if a property reached a fixed point. | -| [`MinimumPoint`](qiskit.transpiler.passes.MinimumPoint "qiskit.transpiler.passes.MinimumPoint")(\*args, \*\*kwargs) | Check if the DAG has reached a relative semi-stable point over previous runs | -| [`ContainsInstruction`](qiskit.transpiler.passes.ContainsInstruction "qiskit.transpiler.passes.ContainsInstruction")(\*args, \*\*kwargs) | An analysis pass to detect if the DAG contains a specific instruction. | -| [`GatesInBasis`](qiskit.transpiler.passes.GatesInBasis "qiskit.transpiler.passes.GatesInBasis")(\*args, \*\*kwargs) | Check if all gates in a DAG are in a given set of gates | | [`UnrollForLoops`](qiskit.transpiler.passes.UnrollForLoops "qiskit.transpiler.passes.UnrollForLoops")(\*args, \*\*kwargs) | `UnrollForLoops` transpilation pass unrolls for-loops when possible. | -| [`FilterOpNodes`](qiskit.transpiler.passes.FilterOpNodes "qiskit.transpiler.passes.FilterOpNodes")(\*args, \*\*kwargs) | Remove all operations that match a filter function | diff --git a/docs/api/qiskit/dev/transpiler_synthesis_plugins.mdx b/docs/api/qiskit/dev/transpiler_synthesis_plugins.mdx index 7d12580e3e0..7e373a12aa6 100644 --- a/docs/api/qiskit/dev/transpiler_synthesis_plugins.mdx +++ b/docs/api/qiskit/dev/transpiler_synthesis_plugins.mdx @@ -307,13 +307,14 @@ The following table lists synthesis plugins available for an [`MCXGate`](qiskit. | Plugin name | Plugin class | Number of clean ancillas | Number of dirty ancillas | Description | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------ | -------------------------------------------------------------------------------- | | `"gray_code"` | [`MCXSynthesisGrayCode`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode") | 0 | 0 | exponentially many CX gates; use only for small values of k | -| `"noaux_v24"` | [`MCXSynthesisNoAuxV24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24") | 0 | 0 | quadratic number of CX gates; use instead of `"gray_code"` for large values of k | +| `"noaux_v24"` | [`MCXSynthesisNoAuxV24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24") | 0 | 0 | quadratic number of CX gates | +| `"noaux_hp24"` | [`MCXSynthesisNoAuxHP24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24") | 0 | 0 | linear number of CX gates; use instead of `"noaux_v24"` or `"gray_code"` for k>5 | | `"n_clean_m15"` | [`MCXSynthesisNCleanM15`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15") | k-2 | 0 | at most 6\*k-6 CX gates | | `"n_dirty_i15"` | [`MCXSynthesisNDirtyI15`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15") | 0 | k-2 | at most 8\*k-6 CX gates | -| `"2_clean_kg24"` | [`MCXSynthesis2CleanKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24") | 2 | 0 | at most 12\*k-18 CX gates | -| `"2_dirty_kg24"` | [`MCXSynthesis2DirtyKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24") | 0 | 2 | at most 24\*k-48 CX gates | -| `"1_clean_kg24"` | [`MCXSynthesis1CleanKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24") | 1 | 0 | at most 12\*k-18 CX gates | -| `"1_dirty_kg24"` | [`MCXSynthesis1DirtyKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24") | 0 | 1 | at most 24\*k-48 CX gates | +| `"2_clean_kg24"` | [`MCXSynthesis2CleanKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24") | 2 | 0 | at most 6\*k-6 CX gates | +| `"2_dirty_kg24"` | [`MCXSynthesis2DirtyKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2DirtyKG24") | 0 | 2 | at most 12\*k-18 CX gates | +| `"1_clean_kg24"` | [`MCXSynthesis1CleanKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanKG24") | 1 | 0 | at most 6\*k-6 CX gates | +| `"1_dirty_kg24"` | [`MCXSynthesis1DirtyKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1DirtyKG24") | 0 | 1 | at most 12\*k-18 CX gates | | `"1_clean_b95"` | [`MCXSynthesis1CleanB95`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis1CleanB95") | 1 | 0 | at most 16\*k-8 CX gates | | `"default"` | [`MCXSynthesisDefault`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefault "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisDefault") | any | any | chooses the best algorithm based on the ancillas available | @@ -321,6 +322,7 @@ The following table lists synthesis plugins available for an [`MCXGate`](qiskit. | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | [`MCXSynthesisGrayCode`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisGrayCode")() | Synthesis plugin for a multi-controlled X gate based on the Gray code. | | [`MCXSynthesisNoAuxV24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxV24")() | Synthesis plugin for a multi-controlled X gate based on the implementation for MCPhaseGate, which is in turn based on the paper by Vale et al. (2024). | +| [`MCXSynthesisNoAuxHP24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24")() | Synthesis plugin for a multi-controlled X gate based on the paper by Huang and Palsberg. | | [`MCXSynthesisNCleanM15`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNCleanM15")() | Synthesis plugin for a multi-controlled X gate based on the paper by Maslov (2016). | | [`MCXSynthesisNDirtyI15`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNDirtyI15")() | Synthesis plugin for a multi-controlled X gate based on the paper by Iten et al. (2016). | | [`MCXSynthesis2CleanKG24`](qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24 "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesis2CleanKG24")() | Synthesis plugin for a multi-controlled X gate based on the paper by Khattar and Gidney (2024). | @@ -336,13 +338,15 @@ The following table lists synthesis plugins available for an [`MCXGate`](qiskit. | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------ | ---------------------------------------------------------- | | `"vchain"` | [`MCMTSynthesisVChain`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain") | k-1 | 0 | uses a linear number of Toffoli gates | | `"noaux"` | [`MCMTSynthesisNoAux`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux") | 0 | 0 | uses Qiskit’s standard control mechanism | +| `"xgate"` | [`MCMTSynthesisXGate`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate") | 0 | 0 | uses a linear number of Toffoli gates | | `"default"` | [`MCMTSynthesisDefault`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault") | any | any | chooses the best algorithm based on the ancillas available | -| | | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| [`MCMTSynthesisVChain`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain")() | A V-chain based synthesis for `MCMTGate`. | -| [`MCMTSynthesisNoAux`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux")() | A V-chain based synthesis for `MCMTGate`. | -| [`MCMTSynthesisDefault`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault")() | A default decomposition for MCMT gates. | +| | | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| [`MCMTSynthesisVChain`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisVChain")() | A V-chain based synthesis for `MCMTGate`. | +| [`MCMTSynthesisNoAux`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisNoAux")() | A V-chain based synthesis for `MCMTGate`. | +| [`MCMTSynthesisXGate`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate")() | A synthesis for `MCMTGate` with X gate as the base gate. | +| [`MCMTSynthesisDefault`](qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisDefault")() | A default decomposition for MCMT gates. | ##### Integer comparators diff --git a/public/docs/api/qiskit-c/dev/objects.inv b/public/docs/api/qiskit-c/dev/objects.inv index f0dc49ea15bfac82e04fd2239e2c2278e66c8928..1153e12b61f86a3cd999730b3c765e641f0a60ab 100644 GIT binary patch delta 3013 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 diff --git a/public/docs/api/qiskit-ibm-runtime/dev/objects.inv b/public/docs/api/qiskit-ibm-runtime/dev/objects.inv index 3a4276b250ff145c00abf17d89346d1b7872f15e..69c908ec1c153b791024e090607e15fae8de48dc 100644 GIT binary patch literal 52350 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%0Dht&1bcBsj_4B}pTuG!@E0_3X$yN8hh z`}is+{o>?)`4ceE!q4v8{y&w!c$>$AXJ#?49Q*=aNja^Yj-y8{w+YZr_RK&>&df<~ z(&8z1i{~^>afFy_~XUe*8(jw}QkG1X7V_MT%f^<|0 zv*^2I)gZhrz)>sd@>MakWnByls_3gTy&;`0YbxQ7scq=p$$LP@A zG+dy&2CjexawneO=f>GHqz623riC0K#2kO$AWE;4*@=M7Y=DHOSD_@cDvfX-mowi_ z&K=zJ_T8>)I$d&HeD1Q3845XfzFrS_iZxrqGoL#mSCgXJ7_Val|G+@@`FIL@$<^rd zeYLouA5Q)K2(Fz5=%8=~_%5BTO*MZV-mm9*czo3xk79-nj9%;HD;C=DpSictuWluC zVj_HDe;FXFH>}b8r8B;B+O=BsV*5Cv&X!qDvf``5rPB(-Jl3s=f7m=xLY+bDkeVVF z)6Lzt5LhV&(6mk{@j%~)v*gHK4~=$)oyafjbbd5^4`l32@Z*=a^QE!BW=`(R@Pzg3 zyRW|r=cg%qy|>_Zf8O@^yzPA){7_)d_@{l}c6{G1;PG=81Xx{PIt1xOUvAGnZjbhq z@Q_aNcYJ-nMmk*aeO>`e!mKedC&vdPE@v@qM-cBnw5G#9X08%Qk)Iw7FTMnJFJm>I zm|dG~J^h(_Hr1a^=j)C;$sPRSgQGRf4*+_SOU8?&9UYCVyO^PZ{C?C2cS^jvjb3Ps zx^k!0%%#GEfeDG2la!d~>?Yes<~4&Ziju?*1sJmC8IUdp?NY}+x;9oxiSA6Vw@mwW`H>vQyD~}0Ms&25949)KNs5zwk0fOsOMWYQ zba!YcqnUQ?s8TVy?x!cEn+}uGFj9U5B&Q?$dP~bto>-=&YhMr9shmFK&Yno-rQD2U z!L<^myuoHn{eC=arGAvYGvC%^(38s6b)dDd>)2)szg|$3ZAqOCsf4~-l6%r|w#a*D zFInmEXO=x)X>MD8*@2(gc(ty->GfsVQHFaOaCR@fZ|78b#pZ9RzoOr|&#~i>#kTHb zHTuz+xR(30Zl&)|f3*%!iZb=6sYZL=*0vm%p!Im1_qw{=L_+gyhwoh4rFBGfBHcVs z9kukJwxnnGHM$PtNWD9f`+%*@`0b^nEZ`FqWcp(e7-4BD6WsBmeHOi0IeT~Zpu~)h zy)a$6wWsoqHQ3AHe;+N z@FCq#r-et~kL#%ZT(Oe!)(yIiS@=}1cejSh!`jm;^|`X?W(C-kT;zXmO+6Q-qJiVT zU%ak=9q$bE$q&Hor?8aZHs+qaM2)OI59#BQOn)uxQ}=R}KBaiGR`6D7Um~~eu~SdX zgoCnw=pNM)vedo~`O*@t9zE)PdEP1UvcX^Z`qJFImpHDlq�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 literal 54477 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%0A`Q$JI!#UDOK-l^^cQ=5$;?ix;k?CmXs# z5zAwJ%Cp0Iz`mi6=Q~2-n&LiNziJfcWhS#SgrrMm0demCf^N-^;>q@ub)((+g2`4-vx@2=bx%i z`@>-^j&B$B!a|+ukE>zYHoi49eAzsG{FLX<)qec|JqL|_^`Zfw(5LLFS-a7F?ivm4 zu?XFZpUYFfo?b`vuga5KntRll;gEFRHu-)2u#&*Px<*5LEW*BCzvKN^+sZ-pU63fh zmk%HFsvawZnMfzs(nSlpViAj65Uj|DI0g9I_%1uv`|N4GdR5=hg&I0S;XdZ4^VZ7R z1gM6FaX%>9{`izVm#6h2R<5PT8@fUfzdRoEFYDpX&3vrB6B6jQJnfHbm#(^NG_(gJ zlt;m|s=Ia$#&<(vz0VH$@nOHd;{4nh zx^Q7Q7=IpC&&68@o$We zcuTFR5L{PbHiQ z3n|2t$wi*&ydLql{9z%`bN=9mA6l-D`g>mO5Bv5Zy~W?7lW!LOBF%JOkJvw@A^ZJx zPj}4z9$y?uoWw#wU1V3(xQ8IZzGx0B=Yh(#8KR7Ot;abl@a1_>_f341QJ?i7|L2%5 zjNd+p>xLd${s-`#ML(3s&-tnT+q>^>%O4K=4VMLqyPHt^(-FSB)ae39*=-T|G7Lo{{HprcgLqgz8v{Od3d}zef@fqo!f>T|AYIo zsPBHA{=r!3gQGXuVeU`ZzL*=6P4As1y=p$acgfNl{mnCRX6t_rm&<4U3;)F_Ci_Ea z9Etl*U2(oMe^Y>uJY9EUc>v$M%X~C_`2LbGE&L0~nAp?LiVJg)e%*=UqskYb)lT_w tW5s7ySMp2qxl`ST6y+(ZKV?XK)NLg@?qh4J&pJsmO7Ur>{~shc5fayg9xDI< diff --git a/public/docs/api/qiskit/dev/objects.inv b/public/docs/api/qiskit/dev/objects.inv index ae017b3b7853e74e2d791387ef199ab2fd8bc253..af61f1fd322b664e5002740ed85ea26392acd4f5 100644 GIT binary patch literal 62809 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

Dt=Mc=5PUK$ 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

L7cm#y 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 literal 5413 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 delta 24 fcmdn>o^jWE#tlZyoa~~EYD_Fy!Wo;bnd?gcX$1#W diff --git a/public/docs/images/api/qiskit/dev/circuit_library-6_01.avif b/public/docs/images/api/qiskit/dev/circuit_library-6_01.avif index 7fa4caac0741babd6a3c6f49f169618c578a4531..bbe409ec6b18d2616ba8db06e6fbb74715a4ccab 100644 GIT binary patch literal 81212 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

!C3_ql+vGd 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 V5L?u=4Q0n*a;nctp1yeVzW^v%WgP$j literal 81450 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 z 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 L4@&MmdGY@Nk1mA= diff --git a/public/docs/images/api/qiskit/dev/circuit_random-1.avif b/public/docs/images/api/qiskit/dev/circuit_random-1.avif index d815592eb331d58024d87404889f997b5f36daae..f81b0fce4c2f5592fe7491302b4a53692c6a6775 100644 GIT binary patch literal 7764 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 b-zRX`I+$_NN6njqlK^t>l%$Fz^uPWG0Til+ literal 8260 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 Vl0@>954RD(Sl{Ay)vdcv{s+&g+9v=2 literal 5989 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 o diff --git a/public/docs/images/api/qiskit/dev/providers_fake_provider-1_01.avif b/public/docs/images/api/qiskit/dev/providers_fake_provider-1_01.avif index a0d0d5fb3c46114eaf08327ffab4560c9f939528..a1e1896154bcb224868b4b59314c1afef5016f49 100644 GIT binary patch literal 17566 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 DnFx4s diff --git a/public/docs/images/api/qiskit/dev/providers_fake_provider-1_02.avif b/public/docs/images/api/qiskit/dev/providers_fake_provider-1_02.avif index 64118d1d4b2f4500829dc641448ae06cc8487ca8..7f43236ad26f8c1c7d3f4eb1f26583d5cd3d232f 100644 GIT binary patch delta 4078 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 diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-QuantumCircuit-16_01.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-QuantumCircuit-16_01.avif index 55d3b0eeb5ef37cb2287ea5f529f4e0e159f07ec..ce43b064492c3581b4fc6f7c7598a25a009c8656 100644 GIT binary patch delta 22 dcmZ1`uuNb>88asbFQbaMPfhKD&GpR7SpZ7o2DJbH delta 22 ecmZ1`uuNb>88aulD5I)+iu05=o9mgEvj6~1VFwQY diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-QuantumCircuit-31.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-QuantumCircuit-31.avif index 3f688d615d784d90f294ea7fa6792c14b5dfd256..15ec0cceff27afcdf982a8a1c931ef0f7c3dec46 100644 GIT binary patch delta 22 dcmZqWYvtQ;mx+^umr+IBr>1tn=4VXuEC5V-2D1PF delta 22 dcmZqWYvtQ;mx+^Ilu=bZ#d*q`&Ci(RSpZJ=2MquK diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-AndGate-1.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-AndGate-1.avif index fca0f11c0f5b29b150c7aa7451a7c260927a8c72..74bc5b76a06676714644bf8f3fdecc358f81d046 100644 GIT binary patch literal 25046 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 literal 25066 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

05@=5F^ov_FPji712Gw&z}j&EO_*d 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 Zkal&qlMxK-wMVBlMqTFu@!ZwB{|o3NjEDdL diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-BitwiseXorGate-1.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-BitwiseXorGate-1.avif index af2b1757ffa71307fd9ca803bdce33a4235edc6d..50b9ba8916695562d23dab31f15beb3a259c6a02 100644 GIT binary patch literal 23553 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�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 diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-OrGate-2.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-OrGate-2.avif index ee69bf3dd5ac62d46024f832d7545778c3e5c40c..1fccff055f594d6ce9e5d55d5909c20a4d458785 100644 GIT binary patch literal 21867 zcmeHvXINC}mi0jdY*6WLMGOQ3C_%u4WH2EXNRTMm1WL{nxiDZBv`C6X$*~k97Ri7p zQDTt_P(VUKk#neTzjog{cjnIAxzGHW@A^s>p z4BLb|cSak-*1@;T*alYkN1L-p1OC~4^_;dkhI#GBF#kIkwgf-&AHp!VLl`!43BzQc zV;Hw%WYGnA_yy|~HI*|M1N|Rck{k>_`Ni>^p$mp>gd=U#U?Sij@534 zRPRXj*|o~a`RK#k&ed)jSC8~7hAT7`sM!Ca^ZeY_sQ#=+uG+3mt`%`xTlU-=*^tPi z8@$CrR*3Rx<86VvPfy-G{J8MN?DB_tMfIAtqcz<}r+pRpgZP3<=9jW^m2AXny~fAk zJKHb|L-<^0Cmr!j7*;;J0j_KNefZ*k^Z)H{{dd`R7aN|ww^^^mYqp<86ID`Da-+4X zi|S`Q6;O{+G(G-O9sZE<xEtZMg53&Sw-BkcUMsHn`tS3ljD8*MM@VtBzz9LiSn zzJLFI3{N-F%eZ(UH8pi=Vs|=oLEZ+;|Ix*;M8DM~t1m=BV#1Hwmp1*MpRxb)%LRA$ zyen6(%q-DJ)s>YhYinyACEoe=g#+6%jq~fMiOfQ`s|v|j`PSh5>drhXl}~mh3+p8H zFIx0unaZ)OUqAHi9>2Tm^1XZa$YfiSvl<#%iVV7e@4_M2kqOiVyK}JxNhCLkjTh`xCl9X*4>RezSE~B z*^Ke4S!6zjKAWGMOZzZ$5rtA5-jQA`QAX0rcDnMLcJI~t6A93VAw-LBcq6I5@rW+Bc1uA zmDN=aTk~9NJsdGSJp9(JTjDSL`al2nghxi3iHT`ya`M876aHr(Z;#uj5?J7^S6%#@ zgfFS-dN!%ezM|;#(xpW{d^pEeh}W$-dg=PYqM~ZVX1Hadc}h;-?+6GB37zZi?)FR? z>nSt;?YG~&#!Kd}<#*2Jm#wP1lTBTI)Lb}o=FZ%B&p5qBEGLh?WJ=o-C_`PNYPvr- znj!Q>8ppCVr=UQ(lD19EXlvVXDJg@_JiB1mMLOdipVv8+K%R!TR!uV>w`fW$#vHec zi1wMnDXdIGbOcRzVnibG?Uf4lmP})VAf+{rXe;Z5iQqZrnUi%Y?p2bseP=g7p zIH;gNom}ew63mhp1((`48^c^a(vmKS%kS}97L;P0nwe=H%kPO!=FNK3b)HhgT(Cg_ zJ8^iqkF>@s=iV>3!SUPsfIzzU%i8^9YV`G`3UB6P*3CoN)8;G1hw?YWf9~@?geA4> z2dxe6PLKK8CUb2w(>!jhfDbpbo)~Y)-2g|k>CDUQ_L)}4HNu6odiM+6ws*@a<^<+A;F6W?{y0=6FeKl1hm*8p3t+3eJ zr;*FjbyEipOKV9F?=v9S+Gcpojiz#m>I;dBYp8{b>y`PfZsp<izp0W`~

cEUdUedB9g;+HOlj#@*8B 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 diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-PermutationGate-2.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-PermutationGate-2.avif index 40b831e89c577c621a0ae24bd89e4b6bfc475c7b..52b6f8b1e3c9e8047c3ca85854b445ed4ed11dd2 100644 GIT binary patch literal 20982 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
5CYdLu#|1hBP=Kl&q8YlT#q#hu z!#AdO>_+)NRS`#3uZ#p^=05Hs7r^{P0Gc2|I|6_#+yO8^mX^)W8-Z&kZd29PMm{%cmHa(qBxuYXPRl@4qQ4iErr(yqJG;+?j zZ+D>iS5C&scorc8iT7%86L_ZcpzNl!>(m>1EeWFW(|x5m&{NZ46Sr^YLHP$?Xh#iG zsX4HZ1z}^reuGkvM#wXKhUJ3?7vP)reI-qdzcV1XLxHr%_l0pHU;rjT(&dY+=(%%> zSOfrIJLiD8f=!3c2Mym0K1vEc6!6HN;me9L=0~;(@E7XST|7?m*XM0DM-otr>f1M# zIyG#&vLn-rMYcn}&9KTfOUi>5@3;nNoT*=6TJ@{Xj$gSxfRivK<$#~Pj3k*&O-+%P zxX=7BZ>-&cGPXnxGQcx<2)&hU_wK8c?G5@D!*=-p_;D9VYBm@m*mU5}RRO>P#-A-R zKWraf-T1)z5&DRvq$Gch0aO|Y2N;sW5eb9}B7_#7ZlN>6k_@vPDesj+u;GfmS%w$e z$ez%?NfuP11URTWJC@nHA0X zafqULE&3DWjF2SujT_HE>If^_k}|_PIy<|7LanZ>jK$T0jyNvuo(qeY3=p1aM(|zz zB0vB6;B6->4%Blhstzomh_Aa zM53susf~-eWFYxIP+=`zJ5W0Xn&)Gr;at{#jk5@LpixatO|-_=R98u;DL!N~Dq}Ef z{B17E`Yh?`=@NIB|6uS{so80!z1P2!g6zXzv;B?y zRvEg^&P4#Go?)oEQ=s~?P4H#$t)G&5#s2FiQz>*c;<79PqC*`FO*Wn3oiFj&@d z3Tm~H#saCn9N1n8hJ*2vE{C|dGNz^;hS4sd{0$O)*K8zDa%=*zgL67GYm%{uiVSK) zi{QJ7gd;Z>lb9sniOU;{ZFWsq{^sUpZNM_5cOa%Otbb%Dg%l-Xgmj%!n@+{Q{`xB@ zBm{KR;!-`QJTmD#{+Gqy$HgBe$H$+Pg^s=kJU22TA`PLBU_KUl4Z-<1O^ASXKtsud z9mmkI*}i={RLfn@4LKAvqi*O2*&uo|y;m0ui>*RH`XaJoGSRD5mJEF&olanyBAd;3 zqhio|QEizu5P=-B8g|7OR&%U=v0UBljBD>u+HFANJH}|%PD$xJ#f8;ATmJeYU}F0wfgoh#RTtOiNnL1p+8tC zczSwLU`KyXRS0gye}iXMp&2Sj~(AwGd?D>E%0Z28UTr*QsQwMhW95Vf9f18Xzw@O~R06QG_dxwX4Y!iMB zBDK$C8z6>+AvjlCa7ClSs~)m*g{W*|NMEdVc){L?ZZYzy@zH(qzG@sY@SKj zHpgI04r{B7ORO*Qu%JZ$R`-YOUFPR)*9LXApghLmA79yr-;=lDV4&Uu0>d=Z687)< zv&pO7`6f9aH?!cEEoh|J%l6s&rk)v^L>_=jFtSu^%TcKOKZbl52{1QEdG%^HFft*; z%*O_y1IfED$jO<)=`1%W;q~Pg?~^WBhteuWLy3lTpuJti)*47g^*0rwz~LPXaMryN zOpsrh&<$jU4(?<@SxG(~`FkfPPcA57gz7+x_zpz~yZ#)U>bcA#&pJoJB_SdnEa&M? zTo~9pZYy)7#SY6QC zH6X8PJpeMu$w)51suKq5y+Q>{Zn;8-i3yqMJ6qb5OV}6}n-pGb zgQ!d{jKQX#No+o@gsxYJS(^IkE7Bwd>$bjplT-GA&>sFuy3`coDc{EYy%IgN32I z@($opG$9)l{s?xr0QFnUrRXAQ)z7s)>!Pc&+fZZCSgZy3R9y&qA}&{@%cLPTx3}23 z-^B1~khAx%sbZAH{rkvsWQ-o-^&Hz@v(%vqeNn_|jnavu0)a<^p9OVt=#M{~nyB6j zP3M;Zpr?Q$8&)`_eEReW!RslI!Fm`>6`YKO%kmvuorF0FoclteZdlieZ^r=anm`#r z!yzGF1sEhqP#xs%!WeA_>g^kFPAEh%0_jqlOj^WwjcmXtHg@*Na*r(UztzKkRPl2J zj8>0=m4=vw5SLSzuqAzmW+4u+8Z252bQwW-gykrA{JrNOpYrwV*PB~gy9aB$BrHDf zMsN~wCoezxkql+=vzk~etcoPbp&Pfjx%UG>N3kC_#LSh9EA)BDA!$v{@Ky zdSTe8qamB&$6OyWEWG#B>n@;zv$HdwGSt$-{CqpaN`#0-OK@UmERJB&5VSfy)n8ul zC5)Gz$OQMXuhs_-WXEml`)T-f9SqiLP|O9()E+Nqk8LOw&B44behP>>J!tcY@qi}^ zUglv(LDy)91tGx$hH`%h*R;kUFyT}zkXdj(5f9hA{$&P0)I98a7MHZF($@8F)TXv)q9^kboM3R*Ia{ z2H6CMNi_lfOT8Eli24RXh8!2Tb?a}?!fx~$2Ilvre+TQ3RPp$}1SoQ^Uo-8{&mRIE znZ_ovz5yJB(h!i4h{S)3)P_@fz=AFVQXfsf&}dEjEiHBfG9QI3GN_Co*JJno1DO{v zc?&!&{*th0VxEbr(>vZ_v8ga~2EgsB$*Vw_nVB(Wg8-f878g4|KHnv_Qdlitm3|l! z+*#0yfM|yCO#Huau>TY~J6Kr}7m(IJrGmIXC9aeX3lj|_tPa8b1N|>oR#vt_Y}WNQ z90efc6SgoQORMM>PXKU&MLmG|^c7jE29oxnD!dU?UJqXa*HY#7ZG=~&p@jmA)F;m# z(_kNhV1Ib&YK8bBvO`lnsC@5_YNfdPPIE3Mrt za_O(Xw4f)$vAMrNW*<6u@T_v|)yJtwAppQ49UG*`5tBB!Hgtvx7lPqHLa?pBYI)_n zE8ryqoh1%rLxg|8g-*03i7BtO`E8|v3pwrRw;qRdWlqtxNqJ@#Na!qsVk-nef6es5 z=g9ljBA*G+4%hgQHc-jGS;peu4q_$+M2!Hn7Ay%|+*vYSAI#EXe96dtlV`9URk5Jv z4Kpe5O}jiZ!XRSuEyK*>EVeGwRp1B+YWdY1yA zhn|$QSY2N?f-+>y$ANv{-DBqG^U>1E+S&+^tpwauS|S~g5#F~Of%$rPdG7G=uuIv` zwwIi|4lrY0c-HR+l$SUT=K(AY;LuJ{e&xh*p|fX4<7452k<0=@JWBu?kQSmLxB7XS zj4ua(hplQ3DAf#e1irCkfs>$d#)u19{$vpAHu+JTwQyl>)~|!ueoh-`reV?gTb^h?`qP8K@JUPZ`dh zAnFJnj;M(T+3kpN&uWwba92>bQ-D;i8Ylkv$B)x{wZtVZ9W0Wg##PR$L7umzc)`47eyOno9eK_3> zNaq0a*TRCfx_T(MGBX@IA%EBjY|=}axKW&&D-2Mo0d&K*w_b7Bb}8}t zj3MOe6mk?FVV=Jy7ajwT15Euk-C#a)?Kk~^B{@_f0|@@@QX9f5Wf4;2$*;vwxH+#2j-wr4KZ9zJGxgX5}QD_&SX|do|(0Sa!-ku&} zZk6*pf9cf+M_UEYp1o;c zU;qj}l#c@4S(Nl^00O#Fn59g3R9)VLZsw1kpKyiQ`UQ!6HlR}ww&4{IhAvFg$OYi@ zC*|0=O;jK`doL%SRk{L~azALEg~Fu_go3$H@1QdX#=} zy901PpBKQkdVyO>pFF`%1D9+cbn*x?9Kb1nQ_A zxO&J)649S9bTW3+FEQyTMlHlP!r-NnXe@x7N(X`tY~24k(5Q*ug#4c-^t&Hr-i~IO zkbTUNp#iMuA2UF!c2P_KwX(J*2u=X(s4_33-;?2LCDgrlb#-+&%$m-bjG$52fu5GM zCFe?GXDLbi_TPi$7LV;U!Ifjs<52nD8+Ug63xjU(H{SgF?^XKu`u@8J{*`Ice{Zr| z05ku(wC=yx_uuP#?f*ALu*B>dJnAJ{Z#xG?FX^gq*Hy>S%GJZ%*%GB@?&|c&(e;sy z#VL17XBQhshfAW8qT<4*9=f_Zxk!nL+5hJch&no3i}Ab}d*DV^bux+?i(5+G|pwg8pAfPB>K&x3B6b8B?M4J zN~B0{0i}mPLN9^9UGM&W zf1^-xA5o}dE-@9_SKtS`t<+U-pth0!;5&OlVIP})4` z8`t!_`)A1*KMv2W`uSC-6H-Nw4hbZ@*r_v>fc|jCJ2?Kyqu^z>;3@nCtYG4q;Gy5I zM5YAN|2UI)Dmc;OJ?ac!(IbyrQ~bM>r(5U;MYBRtr}^X`)2Zv;Ywz)lsJ`YF-|9vD z@gQsC2)JDB7_Vb+EmuO|)1$|Kz~{eS{`=*>*WrIZ2r6eqA%qfLiDMT<|Ue% zyfSdras4vHo7Z~6O9@4XUqNVEy9XE#KPybJ^DL zx<*Q}IY|4_>!&*tz6&Xm%d zDtL)OT#@Kj*>0u6Z?pyVovf(6%>}}DK3=@``0?XRy$qa%&p79E}M|oex z-YiLN9mp_LeA(4W_qs59yF|6y!8pRg+ZoR_DU0VlWM+KmOL(jNc1+zy(eKqGJXxN7 z{ZFyW)vnQN>ks&O6lX)1kM6{yv~5T0LwbHhNfbY5KB1puqF*{3KsbE(FvroO4={G9 z;J(bVv(w8Be)z_QP-|m1IWFv4csRq$O2*UP$1y+GcRu=Qf0bBD+oC*I`-a5G^48*P zaB<5hnlgQ9N!4+U`7A~wEry*!ch2tqm~dx#vn{o*g7zeS7wS1KEG*e|^t;`3XGW%e zR)kulXifl=k>NGlFKCz>GZeV(U+g$wU{3JTx3WqkkF#D-MhhIDUI|p1y04bnF5wmy zN@?B$rqjsCwVXo5YaJCeOYbjs5aQ$erZCf+e{b);eI4_o^~>v%aSnCCoLE}< zB%oa6o;CJN6~|pn2hK9j#UJysHkN4uF~u~Qr{Znnq@>< z1{g+0(XY0E2BYxOg3I>M+{hQDTk zGQ*FbI@s+fiyvap3e&nI`Qm%K1DWsXOX@Rs%gve=Un}bD>xC2iGr@HD*8tMlG@{~NkFV1^S#~r-M zLH%Nhqs?|`i5mW%#K>_^|6HlCl3$z5z4!g3xn5I`dO%emm%aMBkHDF-;4N3f4_0K= zUDx)Zg1<$Gm~xyrA(+;Y@#qn1nLcdEE$5+?p_3wM-NZp4?a=xbTOp(DcsBQ^X`FNS zL7~HXO|9ydRX7F=1j+|PniIisj(@%#60T2IK8g_k@&V}}SNR;@SvGW+y4 z9z34*rmy10LZ4Rig$vB)Bw(J|Zq}b%;NI?O2@IU@kki}fcdN+vKM>MsLcsbkeeXNu zko|7sJce@)C=?7K`E#ps?(06UNL0-!F~z~#StIXk`<#Q8der+CsK-v>71km}#&gP@ zF&`q2+0^vyfa>@zE-$jmpYW;TCf?E0#cZtVDtnM#-?-NP;gZi z#3r+R=qqi{&YNb@JjeObElS*7Zt@o*L}qh>HiD)~#hkQB=k#Yq3EzHkprEXdkB)W@ z)9n-McT07D?P6Q13n57Q{Vau<&2bW=-`xJyb-)0#`529$isEt& za=%#`_qMNA+ftAGfVsh|?*j1C{WsuK&DEX%?Jvh1F)XMbN2`UWY2)j~vFv$t-JQ9Ld_;rGM}za!sRoc@fseyNq@`LY{CNf_!_9 zaQyXGx>~p(CEUBz1^LDfhZ*?IP6NlJ)GG0dZnMZ zr$+y&BI-gBlv9U^A5kWS58h@PyX?-*jd$E^$wsQ+r4?Uqfq; zI)<#LSxfsvTP0A5pkB)vj1)E<9o+Y~C(|-?)8M=&g60)PjAd#X6t}F~QR4Q)RYXDk z%;dg8n*sAo$ASX03fEr0w|`ZuRXfV264^8<)Lp)vG+H@hBna;nIq90#QLr>WGpyfh z;0FnaD-PnQ7HXv3nJ<$%86ucX?_tn;1^@%}=Lxta9gpnjgCCRbo$r_xJ!p6VFx~q1 z*XNn$gc4t{qe4C4F<=0f*EE-0L>R}hx3*8$kt zxGC0?Q6x-IUrKk5oax9Ynjx9Is6Fj3har$Zjc7+$+s!FOUQm!wjWQ1Ocy_z>hxXUs z9oXMQPp`Q}kE%urs-D1=;qrK`~X&Sb92ff zbT^%cXsKTrbBW`(6M`@{y28(aEz+&T6iHi`9-71mBl6#ASx7JGdaFTcLEkwx>R0k|(%`aKkL&57dRjrX>%xZEe$I zS_*kHrj4vf49xaUtbOs zW9l@lr}%D2>XnNtdN~Kzhl`Hq$Q~gG1Q_C+c;*XZ*zM}h%VgM(w|hmt5c&(CY2^7a zi_e5-hqE3Y=hfdBKIZx95BHY!NgJ&^ETbpvZGY7JGlq)He&9b17)8kb1?$S?wO`-8 zoS)<bv32)JI8u1wNX3(zcZZAd+Cx- zY`5b(1O$0s{(9bZ4HT%&;gbl|K~G*;Uc&d7>3n##?DB%CM%%KWB?<0s@QKWvIb>YK~mqg{nEKsHj2iCcbl`TBr_q zofine;BGQ)aw=ok{iSo0qMz$sDk$XpB~XMyeKvQ&2TynK-+HXCmSvx!W6yJ<<_qtI z2mk#r^B?dv1dVmgB2HJr^Nj3u0NRwqxTeVEVgetE=O$oWXl!Usl+tYXKu76R&z<^( zH`M-$3ZCPCCRTf9^E*4A*v)d}PtY6uwwUY+4Er}4srQ>G9x)OD^LcE=F3T+Drp0ek zD+jNU2f9BK?xX77q#raJ-;%OUf?h@soe_oOizLa}L=WB#3Q41U4+?BAqGS5ar5{GZYhv8MQ5 zegOgW==ZlBof*3NSq38EqUI({#f z0vZeJNuvT`JL|zi#XL(n@3@rit%@#|VN#tNOKUB!$>Q66Ex!*CkMoo|VsLW%*DX#4 zD4izZ+}wmyQf#P}aSuCR_89b;^Jv|N@)8CONhWk(d-v>dJt*%r^YQD~uX;qRXLFpA zrFx`j*YMVgjEbu2F<*sz(-3Ms=bokpkMZNNAMOc2^OsSa+p1E z*SH&cF@nFBD8REit?Js;=!);KIdirn1uaoJ-Igy&P~RE6^FPC;T!-B9?+QP9dJHut z>)a<^9y-f$?3m#cb|p!x^{6KI+XD0$oZq#022Vw)2B}(?4`tsoEa9z@s>+g$Dt>; z*?nt!ZGIF>C$4%7`>%5PDzKM}iYwOB%qNUhylP6eR^!m3OU7sN z$3+j$^0(5{Hm^u4-u!9lr2nA1oDFNqo5n82lODVkP|{_1ctsnXmyz7{UxHV;ndpHN zlDDo0u`f43>oeW6(8Kh9IzCAaw3N6QJK378%j+{c^tP)yJel((UAW0t5 z^UFg{((P8+mMi9?+~6V}`hjyHv$m_b`FH5-Qu;)bp&4o*@*(M;)eq^|oOjKOtK+TQSDC=(jRdKDbJo*ZUw_Nf!XLs`rqjYey< zv*tjy^r5cKL|1)+y3i%)Z=$QkwM{YS?dXqn7Z%*62I_o0?`=dc%>OR6&MkASFNQ<+ z`_6>{A!&*k_H<9{&oukeN^AcERkn~4)6|*fj+w$!Op6>f-C|vL#F}L99ryDH9RB+N z;p`2h?3;_K0Sm5Q9(v;qL_7!tsli&+$`UnP=ar)17sJOhw-lyNoD>Ypu3mL-1b;`NtgA3uQ0j0GxoHi@; zx;;um@eKnu)LP?#1+LBQhs^F#r1P^^m@)EndZyi>7aVobke> zf)oQ*RIU-MbH=Q>JK6HaF~-RPzVR|)@^WhmV~XnN75VP)MBQqSLuX(>xX16-P?G1$ z_9sk?-ls3_o>N99ED-^oMkOopPTo^&DKRZLk1b}H{1p)eRfVADo=wZcGos{s@9?(` z34}>|^G#QDpr6IU2SS|18;iX2+r;k?*gdGSGb#8+gVpT~ZGp7HF*p3iouz-Zp{*B5 zI4*WdLS(>CG3r4`vkRxI75I{X>arEJ1_LEy21et_hSlEDVqjd8<8S5{S7X2gmD8tZto_8|Cv~NJE9f)#jUys9v08*9y2a-&=>uUPZa%k2 zfR3BQn;qE^y1lmO|1P=k^siEpdW3KhWRiMSTHh!+_eQi-$C-&zZr>~!imIx+SNxqW zHz43@sGM14TA?W`n@h5^Wy$V$xj_n$_ZW%@-RB>{#cnslMpXz9d<1;zq*6eo;`XL{ zj&b2lHg+zp+qd8Rhw=-GUa_#cv*z#_o6|}}kkrc6SL}wr=t|E>`Qp_`Ivc)Ky2yI( z3DR%?rOjT#JD0KL|G1#w%A$%fE_=vD4~Ry_*R7Wzj$!HhTDb>j-baNe0rCTsl5mQQ z2@GC?B-kw{LTaCL73xZ+_w-|?!Va^?bvtSb>wT!Q{725Mii0W@ICRSRy?@cYz|5mL zibgY@TgO@cEA3d$<=3PB62~kJyj%vb7CD!A+rZO^UIjJRY;Lo^u1uIxy?bSs_ZZ07 zj-*T0)`a_%nPZw>?^1Xp&QFCOyf-V_Itp|~WGS-5L;7|A;r_5b`LxSQB2g|P%+;85 zO97uE7T9l|?WqwMay@Bdu=e6RkUfUxjwPil9USoLNizk0+JjX>{a@}jZYA^rPvV@O(Ttoci_Hg6o5RgQT?8 zj_5H(H4L68bK{zlYI)xFnlL)S`j}7+W?R2J#4EK}%j)J!zIy)Iw91W!l&izs_C{X% z*9?p=kTltG{CR%$vf(N3-AHA z>Hk&iCQoh~W*a4R=a^E-m|^|<_wR@14v<34cdF+H+sYcUTTUJ~mJ9SP)$LnwSB@716F@2+gDs_sMWbp)X$THHFA zm6cV}zVpHXUPZG{(vCVVE}wm)eHJI|n!*Ga3na1E4~ef0c(r=i0?U3$0(<30PkRhk z`qjg5<=)d1)aJCru|3>$rUeceCxv9w{jmF)+OK=KuB4T>gIEAh!tBO(WP z*3yqk8CN&Clo!Q9wxpQ=x67h34P*40(2mTXv#<9JT_3U9XrOpZy-1&q<|P;QuKbjx zF7-ycbVXfuP1MoRDFRU+=~xsM746&NAB&4`Ow^D(ors7u5K*o6S-b@RP$i>o! z#_dcXjSfA16G@l2J?@O_2+ppm>e>k?iAiOfUmN9h_B^g$B~BhL{cUYtPxp}POz4v` zToy@nrdz05i!PSbS1D>7n9Hz5}|uUy1sLPlmFwrT;QLx6W%WGI_eI zDbt2}0JN%#SQwY5K(MQ68qg=$a!Tv=S$S20Vq#)GzP=9a z$!L`dQBWIHcR!nM-1D5^8__}0A~e|Bx5v9BOjP5#{t(U*ac58p%jK7v6NwA+UiMd8 zD=Lyyxx*JE=+t;PW2UF0@vM@E$#c7Xp5?*^swFyU%@+)|#{HzmB6ef9No&fpXVb1% zEPluCP1nmbqAo2iw`+dDP7m;Jz>H~D4T73yHn)RWy8GBh1;5=IK7nypO; z#<29o&@_B8O??J_yn)8?a8E_GMwgcA`aA!jGko&Nm8uX#K{{Z+;V`+?>1P@)S`xy; zJNRu>Q#<(}kOL&5LlTsl#tTF#I=R}b&#A@rrr4rxTsvEQa^XFt@~zc3FYOk+j(YRJ zsl`(&ixxVn1+o)tOmQ;|VSi~1ffnEu#l>!}qka{ldnvF~X2CYcYaJ#XP(X?PdWEe)L1y&_^Uw*I#OLIcq@AvE+|iqE zYzN9y9&aqy>E-@PtK(f>So<=pfnnx6K36?>4dk#y8BI62R%vGS>O<3e>|40biy-@H z&~og<#R8g6uWF=XJo1vnEa)@yPpfaBYB+OM2`5apt$7a+iJ^ofTx7@ZEiuDV$dXkj z%v;~=I&06)FI|m2_3FIUo!2_*F*bsu(|1jjl0tG?T}w&t zO;6Y_Ps&hRESASc{a5DZd#Yu`#Dbit2C71eM0719$gE{L_tx(NLJrJG|D{&8GkPgc z;*ty5HU|B}HtwbP*gjG`?n_Lq9_lOEl8Irh(LXz`mkJc|x@&cumX3XDQ`mw*b4>v< zILI{Y7_#V(VZHDXR}d$?8KB%TG28hi$qtZ4+d5E5<+))8x59M#lJ&~VYLk_pp`$iS zjim#{j+zBJ8a5ez#=Kp5l)TfWl5H@8>oqY&hlWNa87t9$E_eoch)Z3s8nUQJRkJ%# zmY*9Pw7b`w2aj@Ho)eo?ub1X{HTNQ%(@ASF;I3Ylj)~^bNhi#4{%DvE?Ow@EdrW-2 zdbr^$sE}YZ2WYecp?i3sYRP&pMi`7~ku7e$3^TIV~=2pkfy#x4O%4y`T!w+uzp~2$N`M z9%Z2)7`*%L|5w`TgKyNSMh{s$jtf7A%A!}lxuV*8 zm~dpS0#jC4n_M*p)d^U!r~e!qx29St!O!e8NJx^T0?E5yckbG~J5wh`4Lcrg$icyp z{PE*o1ogtYXRXrqzo&OJ(MwJK(d6QMTZRi-wy=cBa%(xi%{Syvj}D(YU!O9tm9J&o zm+Kd}9!Cc{k0u<}S%y&q2)DU^?u7X*s4f4@r{={Zl^XKNCeJknBznqK3S3U=j{q$g@Waw2wT{z~qixJQlFstOp zNNnC(&lk4)9zyVVcJUP}Vhh0GaFR}gm+#=^km-pIr9Gu9&r+!?*W7fxDf|Opj#;@5 zd(d?>8toNnIx``nsWtLjlCwnhZS85I{8`FEUNMy`PaqVHT0cXrB9#5EFFpI?VwW_z= zW%>LWvt9(5U4|&yjz`L}*rjyDeqqxK@=GVt7lUqpvTGkQ4(FD2OTJ1vdCBV8$jHdd zP`2{xI~37K>IpoPp)jCLZJo4p-zJWYTKG)79`HKTDm!rZY^;IQu!5KKyZRaVBj-q* zshd^7;stIV!wn&wWrI2d($dEcSx$cPOaQZ|HPmCi6~}M4F_bh7{s8i)r&dS*ztuL+ zQq=93%i72gn{17J!!I_@vndut5~pg44=jXw4&|K=DiA5mbr8#39TuN)fA;k^GI|8k zY6}Ew?;n4(rE4ci`mMP*_7|ZCN*p_21h*6txOp8f=h;5fSEvs>g+LN9kYWFn2NTyR zKatY%>Tbkk@Prh#*nOa)+})8NQ-80@xJ(uE&Lr{8j~Msw;R}oH9RO<2?=~azBrpEt zbc?*GV=<|x;!+%Ts8MSYAA32ot6jD_v)2*q7RZDv*PPIqYc9XOww8YF>F)kA*QBcL zE#KvtKHZbj58G-U8*U%d{`Atm;!Q^hjt?;L=-VBLj>a&pH>r@0FRCOimc(A>0*FZn z+E2KqlT+gc1(u?0eg{XQg!M}iztiq~;e-zFOujYg=<^pZK(C+fvx)2a`h4H=Xo!;F zl`Cc)sdowql~${NSO4wf!?|TTKnY`b<>UZa>IcPke0H`Iq{Xge3w|G8S-p~?Qa}Hg ziW2+dA`E9SMDQo`WBmg66OyzO^3H{}3?2Lx%97yayf+u+!FnU~Wk`sjxA&TCZKSZV z6~>Oo)v-%_8gu=96~hM;yRmgFjKr@ns5I7YQ@OXZq9mrfwNf9Mw&oB%c$gO#R8;x= zvNqRu<@fz;`Pm|x!!%upg^NAo?(E*_-ZO2q=9+)*Z2s#$v0n2hv$4Jxb=)IobZJrwaMdc?v_y z??|#isC#XD{=A^P7(q9Tt3P_7-kNjmnAv?7YbeU5TjSozLM@efmi12D z#gZM+O@abcQD_)gumSw2D+`jP^3=BP5n2s!mmiG z0IW4vm%w!Kf5PtYAFAH}srlA_({acAGbEDJ(u5==I%pNHEMNuFIN!&Px;;XrW&xaW zdNb7bq9_zfrf%9hc5b=*t6n3lo12?qp`mv%$5E(*d-w0}q>%~xxL8F6Q1>4^m~KnB z-d`P9y~$+G4jGJ{y>v-CAt9ks74`Rfm>+ay8|y|zMb#Zaxvg((xVs1>K=Z^m&%=Te zeRHG^%&+N2JFa?pm00-At4P^*-ntVlsSUOy9_-X%2R|kgXipj~DI9JZU z;1iIRHn8-Yuk%U6L!$`}E5(f&iPg{astwRWJOx|KSy3vPhItmCj+lmu&}$y=fD3%O zvHbDUy|CEWfFa6xjhOUvccNkBbsMZg(Q=;lvGX9I=z~JvRpxpR>WCn?4;7riAP2{Z zo$ks?vx)Oxsidwg_gKQT!Zch!_ohE%Nnoz5BTbV!ls7zC5qCTLgN=bB$L zhu?Of4VD|!zvCA3C40ex*ybmyqH;A<<`wLXBlsKTd=|!h>cxyc*Qlwf!J!LQW(REa zGj!_u^Y0;!&+v~QZ2{^B`U|XIBmazzrCD^hr>N(&wP{gdQfGk0R&-VRxKj!ADiVf! zW0hWNkZ0itBeJ+fVnBlH_U5Eg4uMudaw|78c<>;#tI$T1N)oI7A<YgtUSUr>>h76eITL7+GDg;~Au= zh4Z0-c_1^4>F%5?P>(K%i|gQuY+8BrvyEV;^j4?vLGx0JJpBShT`Ae?le|7CeT%r{ z)7M{2DQ&NZ_$nY4KX~?h_&b>)N?T>`xMUN5CaF5ikJJUfdD988yO?tc4hl4@1Mbkb zrEF&A;quha>mnvaS}?4Xa`|-?ujp@rE4tr!Sjw*bM(v9Oy58PpFf}Z?Tf6(faq$~> z@7}d1R}>#Ua)eA`^i*%9fd3}LxbVSrUt!t`jZBU5VEdH`KTU#_7dmrB8HqXxn|JU4 zIZmDwLL)<7L;ZBEYdF2a2X}y#+HY?$amlMgzM4DO*!95im|SRhVO-Sr z`s?s2CZX>(y>UULGY%-M0R0uk&x^P{~=cnnT2>dz$keor|Of8 zb2ku&<)seII0?&*m0A5NKOeM>sqxm8;jYA9)|v`WDq{cGwR0zjEn{r#zLe9T5%^p> z0ETnFJY~xQ@dv?w>4&}XKvOup$z7TH9qMAlCqS$vESiae zKyl}j^c@&IcBS6=q?e$)i^yCVpv{|>I(6+hcqRV8N$GUWIK}Dql-IEV3_HicGHrNb zE*ZH+MK&y#n!ag$fTK7`IW;Pz&l*LPow(pFRb`0 zJ~|+*gz-7{6{y&>#QZ!UGZ^2{a7%$Pl|3BbsIPh$qOX`y>}v_9y2mWAHk+N(>gj$YkP^eSc8~ zOahnTCJDMFe8B82n?K1!@)g_uR9>d`7(x>9q2b-_5S{$!LYvlZgcw7@BjE)VPi*0! z?4vA85Y1t5OJ?&2Q)g4SP@DuAE&^PLXDJV>QxmQSRRks&X6jL5o|ZF!NxDgS&K! z<~cMp)YRDMTCJg}X;|(yE}GSS>E8DXXU=>j?>vWRj#t_KJcC$Zx3;#xnw5A|#AJ+T zdy*CT@r!+vKe zGh)n7P8De0z|H*rQfGQ>6{J0s6py&wRf{e1%hOqT74^(@kEvJ%Up;U;pmiWB!y_Wj zDJd!CSP(1PHWEE3?O19~>0q9v@2nJ(G3|XVuOMzZ!1a^_WeDt57cN}5RlUW?LcD}Q zyaByr6M}u0U{|{KXeObkqSpj9-IJFGesapz1|72+TO_Ow1+g87x9DYOxOp%F^iYSl zw@Q6`q3DrG<}ldjqd;p3p$P7;xz$xeH#fJ(_Q(bCc>iK~ds3!FVP>rH12hrutE;PZ zbakbyo5GZ5gCK1#$jSASJ;K7nQy^}R^*FJ)gxe34)hlsx9;jCkF)#gw)RyQHL^d3IUhIAscZLh6)FHd)=^ZLy_ zhJ=l<8G5{f%^u1#P5#5yT-+bopsaL1V%fom7Bb9* zBh6TIZ>AKks-V@?Kk&^C5l!jU+f@W>pY?_DegYfO+9a5_RE)l6g!do{r5CzDlx;H3%e}+SNd$gsGf5| z#wi;ToCuE>mmI`{y@mJE$I){*ttP|6>2~M5O!yB!q^B`j{L>#h*ePKh9O_H{sMpkhQ>`B$xn{ z$6_XP2{fJR0A?o;5S1G@(t+VLH8g0!$}M;5YGy$72C%63g;_YFc_qP#T!Ak=@(VmA zVKFh;fRh4%aBz-jrNFA>!i4dOPtFF=86mcJ7|0xQZrIW^T{;YwuZo{Qipf}JBYbvZ5Zbp}Ha z;k4o?6wlb?WE$8w@QZ&ZEtV%AMM2R5t~5Jb9mg}luLm0~;HrH>z{o8iAdm@#|ZqRaJ##@P?fh0Ye8?M?@s1r6ms$i%KKV4jLCPkO71#;9P7g zuqG7+FtK=9_wNd#z{T79(k|D1{|+89dt7pFuTe8z-f(_?Ue0grGvKH7YQQd(89$O3 z&!0d4r#LBHo441R!K2(YcVt@-O`z`MJW8xjojZ3^JwjM}vIW0*yBbO}vYr(y{SN$S zAX0YbO|811_9*fGxSg6Hz?C9C{CfR{4IGM|f7amgs!;1Rrduyv^5IeUH z>>JuA$>c9aUB+ubX|{zTVrFHa%zy5jprmBj>K~~6ATK6HOF1-Agx8{&%6L{loylK1 z%Hz@-i%1)oY$VSD90`)d2qob5v1K>+>x);UUUD$gphn`s4;S8efJ+AiP!=a!4S|C0E3O3ByATvWZEbBH zvNj4;c!jyt;dYq|;eF#Smj_$Z%S||ZQEP=&{u_ud@*fTlG?D__qIwclUWY|RWx(UI zhhZ7AMGeaK8K@^fj3K!0AzPXflah+P=dJuVW=k3H9zaYEWb%oyE9h)_0@m&#HN2^% zrTcuGAHq0#iOwu2!*ry5ObSudfvn!hD1tiX6{(+mC4l!4%w`=HCz`P^m0fG^BMtnITTCg@1pVKF$NnTL)B;jQ*VmF42%;+++q4y$<^klGor z*$WPL%awO4fjPU1~mvqX(c>?>wLX@PU8BD{fI!a5g+nI{njllh}YLl$k#Bg=dy~6 zl2^g#JT|ZKXxAlVtCc!z70SH14>Yg;7$(I-_T9RD+e68dou34489(SSkI+E!#C&4a zEA|2!B4`S{;g~ezSZN@>i-2%)qkj^fBSX=bdv=* z+BJ}O5JZ>7?@}tXOxHyL&*m~yOCNj?2q0hc90W)(S#z4A8vL6q!Q~IdcrXt{g*f^W zgg66mc5l&)g71pi99KPTUP0!(nIP;S%N#B3n3;dC{-|x=z3*?du~@9@>`@ps83Q4t#| zE*au;s<_8OsBKfMYAul`aC82O=3hHeAIE_Tp8%?cfDMou2OyNlKcQ8>kFitvKAMI? z)Tie`K|-K46Ma_=fLi=N6$XAZY`t?!%L5ing+)AOzJ&~TYIYnfJGh0@D|fRdZZW8| z9>5zt5TTHSqvlmxK)djPZxt&Kxe25b#uPU)GBU7pU)Z2^7J^e!6M}f$RzLH~du1d0 zY;sP5c(A-ggW1tjygViol8DCE2{3gH=_r6%&xqzs8AYCwmF>gb=Rbe`n0GA1w<)Kf z-e(Ynq@4zB&E1=&44@W)I3wjXW0Ymn8Vj0CH!MMpsZ%+BYo+QtF4yf1Xr7C==-XTL z80#&B{Vqe3X!$u+NeshSq8NnmC=BND8=u#V^{5Vji_OtgT>l2L6R1PoP;Z@)TkQt3 zarRzLK_f^_ z_+!2=sg>0TU>>_NLkWl(sXeHa9ch6@%gV~GYbZJPOCqFQ4O&2uufUBW>Vt<1NeM1doJ|Jv9E^y1(xtdu5DKPFlSgn z%r(hfYE`%Q4s`LCE?t6NF1m`jV)~Xxfssgh2>m&-BNY(`aZBG%I^V*9GK6$l{u?WZ zXPN=)tDk3~;Mn{5T90KQ(%d+ofN&^V_84Q8?@9hBq^pL`RU1g&+D*$5SF7X0N(%DK|Jb_RhX}XC;A^R zc#8V5f2v|Z@Eg?~S3x#K79<@4aqq!{J#bCSzk_(ya7d8`IuAMEFx8fTh*cm>aB^|Y z(83J=M7CVXIL9J}uC5GSRR9hhSO%$wy%*s_3$(fu7yo{QJbR=>L(A?n5jgVdJm_39 znDaHz*z2aKM;btZMY=E0)n@w&Rbf>SH3B3*q{d`t3zGqc|Krjnu}ijyYz{Aq`w~A)$ zs-buw;u7RgT9D5kPYu z|5z;uPL>|!x~aE+0(E(v@&Hvcz5yhe9FiOY5++D(WPZ*JD`ytqZe`O>aTgF!u7FCw z33GFxz(OFkK>+ICxbX~hQZYFtn9r!?f&>gnca1UjK@*W$iD3IdiZ3wT46B1Ez<{41 zGiMhS6}f+h>iErHi3zg)n9naw*s^&ugeM0PQ~^3p$a_6}+>J@F{$5|71(*z>1Y^50 zAZ`3;WS`ByN-l&0=>8Ll)F^4kXrv7X!Gr{<-`+R0`Y+AbHyZ9P3z#8j5^aO!?)>O& zCOr_@#K(lMh6pNuQP~Fi*a;OHcKY209P5Or;75awuMg)0I@OhoKGGZ|kybV=jk?$m zd`TZhE{OJn>jX&`))N1$rVx^!!7(tns0d;tQexp|L;?c?g+PBFUiO&j{mFn9 zQMBv_1alV5X1j~*ItCY^GIm0#mUA0>>1zanAEcCDi}YsK=exDppxT*}assv^d>DIK^aKpp(K}%?<;geu%yg4T}j8yNrw+AeVB&g$!XhVhr`U zyYa*MRzeGNW7V=9qVMv5S?Mb}N8#WG3AwCgdf*@}fPOOt+<8MoJhBh5&s0nJK=XrpsI--+s{P%tSfQ7pLkslv@ez=hH-){Cu53?X z`w|7bo5W;5U>LbTvzUcw2_Ux8&I>{lW_A%J>DaG_NRu0$z`MJu0|SvsMVe+@1mA(b zE?&(eu0%T#W~I?O;P8NvPb_@_eAp7LSCT;1nu>9Syl8_;k90LitwYi-7CW6W;!}u1 z;SkL}3nCiVvSPDu|9(9HJIKl7A?CZ+2HjhcKXic@R(yLAJsbu+S~!oTDQ$mHB4LIz zuq*NikY^AKfSgVE&M6IxKYjXCKlS!;KrXVvEbu#+(&hg6aT{<=9k&Dz_?WHlZg#Hp ze+gBMiw?|Ie{K!HC}{9+;Zim5nNTPy>S4Ml1l)#M0aF3c9}$khhc-4gHmMGP&8v`9 z_Jd{lFAnnNf(T*<2am-LplXcDOAR7hO73G|Tn8n*l#qR9G#~XRY*>PLAL~m%`W9p- z&DXD;fTIcrZ^dl{;taQi7x=Z>j+=n()0OT%EUU8tAet*ZEg-n1TJr|aj zMcS}U5hBQ=u>&54bhikNg*{J#r%qi3gb(KZe(fr>4qK$8|VOM}|;=Dm5<9oi|Qk{(Y1@qyWnyVm5cF-K_cCD?iBi+MY z;1&D)_&<5PGGw{sW+@YbgW+W(Wo(8W_3>Lzk4)=U_VXN$Te>B@m*r9x6s2y3P+gFn8Uo zQFrcoxIA?BcxY#J%FEi#-OkxbLR3~%Quvguhlh*1oS2y7|M&$_XEz%$p7%qxa1az) MMdL=U^50MXFVE_#XaE2J diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-PhaseEstimation-1.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-PhaseEstimation-1.avif index d28017afa11fde8e28f5e9ad509d82e9795fe243..d819495407cbf0e6068acd59b9d18a67fc3a3095 100644 GIT binary patch literal 14700 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 BzvKV_ literal 14823 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 literal 17941 zcmeIacT`hdyFD6g*nn3N3kX;Mr3i|EbZmg3cccYG5eU6Y3n&UAO+$&)fT09JlTIj6 z5oywU?*sy&geE2MThZ_R?)}d1jC=36_k4GpKh741dnCBC_gc?-)_mriPl7en6d8`Q z9*0064A4gpwIGngVh{+O_0c2XmGml)W8j}lPakQiLLgo|5QzV42xJ?)hrmUl{1g>B|Uf?^8jL|EBKex9?vyg)pT7On`>2Nh{{`scy zbHk5JD4U%o+YOh-AKc0=UymE#9=dt=uRCW9mfq~_1XOxHh?>U+1>_MY$0xta5WQQr z61-dV7kyV{h>tHa20Z|GLp#i_a44Mna|(ehUgnUy)7L{H5pB(!(l)La?92PYKg7na z?0&0#W5(=1cu`^}?WX{y37cIzOABxf+?i)nd~#LpK69Zk*g0$Vsdi;MU2<*&1)bl6itH7QGIgd*GMM^o;usMH7X?sGUPSldflVTN7gR;5H?{b0$|E<)cf-Iy;A|MHXk)ppp<$f4x%rthXP&JY(RJ15 zndbK9dh+8O#@;t7H?0jn_0uIRjUsCU2o-b?f0qpMgDO|6CJyQ^(nV-TJ9|I;{Gbk* zqrzm+Qt%dDdN*+L&=-?K@&56Q?2@S?Ro?u!ZfS;`6N(`a2wZb1K^$6+j`=+5N!e3V z&*T*p^w?~34GI-boE2z$eT@0c*|R)QQa28D^L;z4XS27OKWI0Ajs^=wJRs~g+;Qvu1HSscJk=9=*Hg8#+qn-yAdv
?;42 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 IeY02p3kZ&bqW}N^ diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-random_iqp-1.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-random_iqp-1.avif index d2eb3db40cd075d99a1d8e1c0caf02235b1d8138..235fad33f622697b93bbd5e4165ac32d4f732bf6 100644 GIT binary patch literal 9265 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 T#fSs=5C~jV`(C-Sb=dy`U>APK literal 7150 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 F{1-|3=4}7~ diff --git a/public/docs/images/api/qiskit/dev/qiskit-circuit-library-unitary_overlap-1.avif b/public/docs/images/api/qiskit/dev/qiskit-circuit-library-unitary_overlap-1.avif index 01cb8d1e893717241b979be93e05d4d0d7fa5b28..465545b2314bc8a089703710557c8d7578b58f7f 100644 GIT binary patch literal 13572 zcmeI3XH*ki)bE3+2ndKMNLT4fkzOMx(xeGW?=6uUdM8n7Qlv{SDov#K-lUfRg7gx4 zhtLyRa);-A*W2$}_uKt&@34ksWzL#4=j?O#+57k36Y@q)fsBNX1Ox(+DJj0v1c9zy z0N=mex(WPu46Atpd_1&J)Kmq5yxBpZ4*?+18SvAGbr8ty83?p#3Ia(afYrb zGWU4rVuV>%Zf~Xw!+vEK9eXNws%bNO30{Ns(LQ);+nWUaxsbrlBKhcRe_BX7lYFC6 zuYcoYI#b}gc11lw&4KWDVbKB*A^BcfPFu~_Z@sUq^?zhg*90d1tV3gZg`=MzL1K*L zB*PI-*y^+b9~?{B39FB{XJyRZnQ9iFPxH~o$#5Rd)K#M;YoA#cY(?1d(H?F%JWlYL z_E`8k(g%FD^5$6uT+q&J!3%TU;PKu0rF0AIa=)Z5yiXY$a8qEpt?QW{Pdbx+p>X7v z+_mj{-VH8MYLUM3J*7hKU^n8T7;|-s9lk+DaY73#q+;cV{W1uvd~dQdM8yW%QIguh zww!AfgIMRZ-f}OsIzte@XI6XTYM@S0IHn>ZSw&4bAv-_fiLhR$6ddQNh;+Q<7n z!V4G^UFPdQM;VWvAvDOR`C{047A*bD!g{C;Py=H})PMC=|M zt_@<2?&OdDg6ZIze0bT*Y4c%%pu4#0DKLdo%QTe|4$dMet$R&I5ffp!x9Zu%Z~%&U zi9UNE0^NE&7J1OM;=1^xm*}Aw?ltCOC^MfX=3qZgpqNXn=4&^9@yJ1pBpB=~3z+)9 zK3OasoC~@!oNeg6kzD~prFStS7)(q|AcN^hwgkhMYHH+--p2<=cWhbxmW<&KFcQ@D zU#t9=)}4_LwWY;IE-(1h`xj&Q(joY9TTZED*$dL@veiExjn2U<$=iv+En*b$S*Y%htPIS!HmW`Pq{vN;#@`wK4~BI&e67y}L)7_4((J4#LI_?ExEIxxuvD8cDxZrGq%#?R zdB9~WkDN3~1A528!}CQWQ=XEBrYnX`dGGl6#{Ah}d7e^%MK&YP%_n@rh z9-HsY)6a@#>f{veia&E<_!HaQI@3QmB3t}UTaA)s*XVbdiDoaix_C_Y4`wQHY2H-4 z8vRR0Q$cl#%GdvKZhhd3M?;VN`?xq=O$9#o-LR&;A%)+SH%@L0!K6!MY~jZ`M%oJE zqst)esUfR-eO$)A`*IOX;NAkg@)_iFnKy6lI5|1Vj96pUD>shSt-Z9lcY=@I_@xAJy23+2%H&Hy(}YZbe5%*I#l(;Et@5R(Nw`{fdnh+P_jPjepP04c6mI=<688 z@I4*h&ahjllMS!&AXdxm8)+-N4>*`)_*l3;snBJ?Wex6*j;i5nvuHw2`xAl)e5Yh8 zuY>OeQIoOP(1>iIFpE`T-kQqmyoCe-z|e!IYZ>Y)Dk_14!NI{)l#~QAN=n2_U6CBD ztO4`$rVh0$)FdP%QbsScNd(I#!7$oJ=DM4)r;+RRhTDmUj3LV78j0yEz{4jBKMNls zg|VNubvcPM?5=Q;rnfHAE9NVsPk`lf)CSAr#&P9M9cy1C_r_%8n+&Er;DQbvl|%mO zf7^iC_lCR0#nsGw!R1BpAr?)V7o3F)2@(JLtk$n1YqE24V&dZ3e`;j*g4bLnCL6p2 z8+|bDd_KFiYr0Lo;whrAPKRojNvnkYd4CE4`>6`L%Z8YkyP9v`+DbJode_Ld#M7GG z^=XrP6-n1pfcs%rsFVzZ{Ew{4iRqn5#i!w{ zem(W6C%tw05t)hY?Xqsava5{!5EjVswDRB{fmo}YBDgoq!F(*EO9W9FyTY>((=FfB2abKedWH=`}JPEx~`o+HCiW7n>=M! zE|duNIl05gh-?p`N|JE1Nm`@kHSE5xW7sN70d6PdYXHf-dv_0iu_jFm_7(!6;O9I# zCVs*SkxU)tc{oyuyHr#m;o$}Q*mPpXmj(u=jpK}9XV7=3D+FnQ9>WSNb?8Z@s=f2RvvS1RV>{nGQs=8CiwaKsM

AZ--j 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 literal 13354 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 iyO*r6u*<(+Amrw0FULUTmHw!XxG64WV?gf$n delta 22 ecmbQmF^gjZ2NNf|D5I)o^Y5LnHw!XxG64Wbx&~$d diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-circuit_drawer-1.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-circuit_drawer-1.avif index 9eeea46d385459f1d869501e689925fecaebba97..84f638aecd8880bf979a2c8c471ab9acd4d2c0b3 100644 GIT binary patch delta 22 dcmZqWYvtQ;mx+^umr+H^=q#h`=4VXuEC5Hp1?~U< delta 22 dcmZqWYvtQ;mx+^Ilu=bn>eGwB&Ci(RSpZO-2QB~r diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_circuit_layout-1.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_circuit_layout-1.avif index 92ed6b53aff674222b39ce2e24de732ced819746..9300f993d65a387c4ebb8d0107bcf771d579d9dc 100644 GIT binary patch literal 10213 zcmb7KWmHsQ*B!dM1{fNoOBx30?nb)1yE_GjR;0T@LK<|R<<^q9^%|IYwU>_2<+)fQBumRaZNlqH{^6ypnr6L{p2hC0XttSYC zsrv5&7wVfx2Ldq?Do9Ic`>mV?`}=8GKi&nazJFz(?c!CI@x6)Au1K9YRmVr$%1m|! z4#{SQijJcldn$U@M`-Fcm~ubN|`9 z9JG8G+l?K$NFTvT-eyduq8wDC6obYTKtud6|Cb#<1IIKpOYFCL4ZOp-k*l=PJB+aN z?>DJ>Br9IwSYo!cv?u}$TP#Qs|PR8m|FZ_`XlmV|tHc`2``C>anSY+-4+`s8*l z=%skYHEhNOzBp~$+}V727Pz{)a{K$}ou&M$;?yr+PFfl^n(&Q-MqDBModgRyywv|XRBG2QC42wWZdP$ou|6A zQQdY$X+RqmIEMkJ;O^8X6gqV#(ZD_uZ7Su_>Rs z7lKJCD`T33{I-VP{jfwuMYTKEI$pDLy=x^VPKf?{HNnZo&OWJ7JTx@a;Jn(}IPrnA zIX4%gtFGRMC}DQ}bJBBV>as|;X1UY*SJs%7!}(m31TJFv(yzDH)(oud?A8nn47Ihj zi3^L1ubY?GHewI(^M-%UI<)xx-v8kKcw=92@95yrU^7XUk(o)u$%*r+`wIQ}ajBQT z>r-c^aQEYJjl8^k-`-eyzq?Ua9*HHU-X{|oU0q_;JmF|oz52r1T1?^uB$iBccX#*0 z&0ev8_qjb7OUK34unueC7Dn<%l;{I4&h6%K_Eo`=m+;AYSKH(h8#8l%ELBKcMh2m@ zoZO}^Ja^4I(HR_Kq zfdZcm>Xz=EUw>?H-lMblO1(-127dJ%x$iHj+`N7aAxfKOe@R^uExvHzY1G zQQFLmnv9H0U0pqlv*!Wcu+1gfdcXsev1Q9y>VAe=<{_!+`D%U0xhfC6qK2n znWN+55hkDR$DW&;n$)$my$q+KxnqK#?zVp)6v&yFP=d1I%FD{k&(=D&1hI4Yod+g3 zdlM&f1n4+8uxoVd26(2SySzM3c6NR5*$ppt5;%){dY)S$U0npnGozD})>Tzib((MO zN>MWvAi&i4U_gGoUXfIFbFJ^fAQdWlRZNr{U8& zNnFIBn^`$Q&!35NPl?ONQ zVBsXoG-kgh-E$j@mu;->sq{SYncrlIk~F zL>EAlinLi~>kI|v7Z!e7z2L`}#&_Cb0`ZFM4{K^_dR5>KL5Y`!|EO#eC|{;IYW2EO zn?+hymKL~YgSu7~*-$Ghdfj>>v?SR`KF7tv!ot4O*68Ty(W$B7EN;snkEFGt!E{Dm zUcxVd_bzuk(J?VVK;S?T5fLDexw&~mVIGxKe~KB8Ln=9w9W7TY(LlM4%yk+p+<$z559ZLX4H-gy4VOjH~+O*$I(kp zMU{N}YblaD=J7FrmzTG&s0dCt4|{)qpNWMfLbpc7-JSd0yLalEnh`rY7T_dVu3@LU zxZRf|8dS-eF{Td_mp5~2mSbrQf33n zu&}6`n&RZC#>T`T&o3>Nbar-r_0(a>^!xeI_Fpy8^6(H$zjJ=4dW9PuP3B#wA1oH%qm`(xC3Wal2bMg=j#A^Kw(PjI{J; zKj_4Jc1vq(Yc^KagtF4o&yP?+m?Z$~y{Eh1nMVh~ma*6r7Qhmi(7_ZbzP=G;^PbLoLsv&i2W!~zfHd^m z&(ynk{Pn4%sp*RNe%Smls!V+C#cU#knKBzR6ob%%j#s74f(a4CWmL_z3!sO@R%uo2 z)U|CyD3%ROi@hY8d+Dm+&af~EebXyuAzZT zpN*K!q#K+-%!C%#-J1qXWs>B=wN&V?x70(JtqlV!3pxS9}ZU`BlT^u+IKUqt)X}VLGNQiUNWrl ziHW>7ZTf6K+TH2yPL}6RLe@H1=<(5hP8Ya(YOJYxRYPp>fK;3oy@$N{y+=Uqzm|tQ zeVrn|4;HcjKi^b{ZTF*4MQPU$=WF%dkHAGnQlnzPhX|m97fDjq2b>uwm4Mt`{A8L8 zBnam3-@gHvkdu*#UR94|lvh<92B4m*w4!43Zaz_!!5>7HRa{J)3-$lbj|!lbf`US2 zeSOTBRfNn|A9E*N`8^^%y_&e@Iej;;80NOQd5S!}8D`dNLR3xoO&hpO-4}Bi_KV+~ z;?4+MA-K5I*C!9vH8q!WYGT`y0-Hl+N*@5C0|Einj*5YCO%^`yz(*PS#~qUr+HUL- zAk5&84G|2}s!(0tAQ$mrYjxd(t*jVmYik!Oj_h`MqA}H%L%{a9)LQTsaf!QeU`ws= zEph5yYITd2esAQh8Y%HS%B);u#3}<<`J71`D;t}gzxSIXXX{-#Kdb>r%n}Xc5BYN` zx3|B)u1RkMFdZOtL*L7kXwv=rJU9#IQb(*_n-9idHR!W}M&kuTpM#hP(f{F{j7&c* zh_OYyae>p83vR`OTKlw{Gamt&0p5eTft{dTSMfZDy>CNH+?t)s6^dJFmoFYcU07O* zNELj8$M3qaMh~i1XX5fc)`s5BYk`G4=*!g#U_d;ID=SCo&`N=Awo{Pq=f_{_OoXTW z#1wA|D!A{?HmLTXziV|{@909IBXxWZxWiP zTN7=z4rR8|&*7YrsM{YnEHQyHe)w}e&29gkzWa93P<1GE%nJP43KeLhmaDIrm{56a zzV+Rmu5z1SDM!iPAy2nWNsB7{1{YkL2;cvI2P0 z;1R6{2){TEl^8h-sjwZL>mytT2HLc{xEE7{8GeH(fnW}fK4NyfaXYfp2Ff=IoFTa% zXw0baFo;k@=-*$a58JU+*-=yj0|O0SN1AN<4WPe|x1Q*s7tmxHshI8f4+7@b0?QAl zJISMBdEwP*7!CU0IAFWmI(G_ zZ&Evz0}AV#4P1AVNI=;}a^=vhdZp#%&jKmDWtH{%@56WiNW4l%+YEjAl5UX2@0@LT zpdSV~+(<&E1SwY6?#;HpV8IZ0S9sup-X z)+@h~0_4Jb4&!(J*FRhA6820`LRd?v_8B}dDRCo5Y`T%H!&;0JNgp;vAx$3kfgPBY z^9ULgkpduLJb!?trlh8t^KfM-5cy#rl3FvWsfem;AlxK6`QOo}!_CFQ^|P2g z(I9`p0|{mW4{HCW2zR|cjUa0x{O)dch`PSI`UMZaB zOZ)|>iuq%PvUY2 zM0%ga4Kyc63J?lY5G=KjGKfvTPSI&HMFxiL`XM6v490zYK{=kuZx4CYTH|p+%nyC` z2jE$PHubY&S#B?~k+1x0{4eC2^X(ubh@5P%vgBSPs<=5?>Y*+qYeO1EDDh{}+);!7 zwM~vQpgr8rzueOb3jR1XbB9z_QWL4ymE5B%8c(;ANqOB^TUl+*sR4GPu;7BTt?y%*j9WtpfHxy|5s-djFMoKZ@(-UNHLF`#($`R`ZYxQt7<}?SK0dyxzAD3w-Sc3J~!ctXZ7(6;b4El2W3yaTaT`oudB^DY|)5Dn# zuVL;}qJ=wps0?eXLDi4}1R)kx&;^`_hexhMO{pfcrlw|t#aDFYJYgc`>S4W);=1+g z?tVwe4Zm%-a4f@0^;gyHZ2dX1B+homcrQ zyrMch4`|=K>CxFd5cD{Sf2ItFL;4!_6<*#C8Q@5@wQT>i*2De>(_9Z{KtTh2yU}V4 z|GyFz2d8aC4?>wO&Obg~5sqAQn)Zpo^=8ezZ%cY9GLROh{jFta9z<>=)@GD|ND=?@ zaJE>1sq!eR-Z!cBO?S9=?z+DoVC5&`1tPf;%fEQ>WC&S+0Ek-&>_b4>|&MRPR&pIsx z^xIhzf3)6xgaSr)L`Y!6sHP!g#sxoq=gZ}51ULi@mLu4N#KbEbfL0`o!J*oCh2z+; zvTVokiF-G)#dJ%|@dY+8AjwEn2J{lEQQTVnMtA~7RY2?&u5N0MhNDH=;ymlV~RE?7LS@SV1K=g9<{`vkM zqePqKU)}(0=d-;SB&-xn1_f1CHkvK9imEcOLq=$rnbDF(@4&?D22rD~l1C^LALy_Ui$h^2D_H$nsDpvc~G zQ_dB{10?fTz%<~p7(z`>uNH(2AS;!pQ_x+lTB-cff2s@Kf}{Q-P*t}``wCNCBx;<+ zA-pMjF?3V!FeOc{W??7CwWsk5EIz*f+eaS5TjODHqU=BF7r9WQM+Xr3TsE*mSx205 zI|gW`?uoklZg@58x=;Gk{*W7FGLbT09RDy;%0Mm?!95~Fn#-TOzFStNr;vPc?RS8v z^&8ok2Oo%mWNbP#k=tpbo3yOV%Gd)E`*hZY6CWSXj@>kCHx!LQ^551AXrRFRvw!M; zOg#bp^li>3Ch-L!^(54U%ikd*WlgR?tq&)oA;3dr0HQ)Pthnj7RQ#KR?oAAu{s z|BefrJxN?4t@C7cZ`KLLRH|pU{;FjUdBmwn%N_IX9r~Y(K^#Azu2a*~5lUtc z`G4me_yfW?XB-{dg{%cI1^{0H^Ua?Nsi4~hJ(W&rz(cYG7TE9csA9H4jVfb7-c4{* zmC_kWeMwxy*Hqk0d{JgR+9gp~^y1dMur1uHd|`P^Ic@~CI4&YUrOta_C_=Iv_|>~ zTj~$z9o1PRIPkeBsLZteKejb89?O^iA`kbugO)zy8k zb;9)K4W*jsE#X=3OUUTHhhg&>kk}=FFYvQuxi?ho>iYWfpYHzia4G0@h-(sjt7Bzr zE7D@0u2}ZZ%)8p3xCG)$M^8V*d}PE@*8LM>$qu4yP+ADhAFQQdh?RCsg@jLRVcHM5BR1Uf_T`adWjpM3hh=Xi$KM`dyCzSZKNTjqdVFSv10pFgpS!yV{5B#N=<|RaP75K zqr5dw6d1ELHX)t_W8n>u>Dpi%Np)qCc2+xTH`+7os$+Oa{KpZgLLO)Uwtp@S0Ri3g zjchVylA73G!cSlB$N>FRq*O)P3}2aEWgeU4@Y9p`e} zd;>%8*F3Yh%q0_82W}Eet2O!^V%KVE3lthiNYcy~9Wc1H;ne*ka@l1N2^8S1=)I*Q zj28`*f`;L~bakozLd7bMmCqkH(2O)c&4B#m5t{~#(ngd3 zv?Q1K*%K1YIAkw0l6sRRK$*pzYokt!t`t5Uf(YABlXgfnBZ_8`22b9p%LG0I1=0Fr zA|ou;86GrwJKdkHr>3NYZBGD>QE8Q_Rl}bmvr>%YJ!~^x$^t4R5$23fd~x_m)8Bsu}jCxvFOe(^dCru~e2V}Pj@PrzuT`gL$%UNd~D=RxmQikoA0DdM|(9J9-IpM&*GmtvR#1Qed35ws?TPD=L zey69K+yf@98RKTevfOO;O878}*myyZ%q9+la#555)63_<$s-GQX!=D3?-@a=oFWJ(& zH79<7Ro%Ab^p@d*dBvwdz0Vs2zh#KDb?Io0q?&7gHa%P6D^BZkrP3G11t7G9{{D%& z4;LH?@e4)SSH?)RNmQv%ik@$1h5zAA_^^b%HRG>Y)T8cb@&O7AGmwywT%NEK@-2KL zIeX4semih~>Zq^BcJNlu`RdW|&W63X&hzi9^?tZEKXNq5x!k-VuqF?C_(6EM=vdtI zm0pu2h*rS{yR7})$TG1VE0esT0n)ebgt%iBzMtM>mb_%^cS^`7bq~fZ66x~v>MWVK zh(*gi1DSlXkgl09j3s$1lJ_&wEH&l*b2)3|sTMXxaRHGnC-=mCpp2yzx+Bms^{(a$ zZtu?M!Og*uw&=L$-OSg8v{nMSC{>&j5v-t7Gd+I{;9erAdF@vYULGE=f%12M{^Q^Fgeyq;ErJlUG-OSs zP3YJ9gy-HS-iyG;(`TXt(4Tj!vgNt7N>$5bG>o@}U>zjNf)SF$nQHq(0t^?opF-)s`UzgS+EbRq2u>!cCiFc~#HEQ%~0OInJC9%&Op(cEd z_-9S^KCPcOI4!@Hr^kl~d!gFf+w1oP2?4{fi)Gt_j&-r=YcMwxcC&11uvQ)2m{whh zUCXRfi+3##{?Cgw;w*OYyy&}lMZFQYQ3iTrwuojGO${ZL;(-YH2z%|luez*9Z<#C3 z6HKf$tm9ucnds=2S8>6a!XK7|SA+8h80)+|Jw3U7&x|S_uZ968$@Khu-)p(m7Y_I_ zt!#a5n<3PV4kJl?Z=Ib2@ac?QJ-I2q!khAQb>1{bA!YJQ@SqKBW zkE5gv$8`6Z=eI9@*&M%Ad_<}@%z_sYS_05T1<%!?Tmrqee+MCLNFa=bNs*uYA_MO) z4-w|c!@fJ5BWedrQdVidV=M^52l#Kh|6DLi*!Z|2;GDGv^rGu<<@uEqCQvH`vQ;?n_i!9HCPIU84kPl-@~ ze*SaMRaLQDUDj9VVGHGv8AxV_dmnH=JaWC}MDBw(TVx9K$!Am_Wwv8Zt1ys@aZzVg zV4jMT9xW3$pj{a5(yX%B>6}&GJi|gt2NP){kTXG%Xp#NSP0MvcL*&l zZ9~AVgJB!S$llGO2gB;}_6 z0Y&%CcO_t2=j5G7IN}cUmJIOSxT%}3LyDA9q7D7ax|)W&nl#t6#xCQC3xS1&DZC*92RgcP9nmki0O4DiA+CTh-v}5)Zo|5uR70O&b_bfVnB;D#=qd<{lq?bl+$(;UwK!mk zUbV_M5RjDk&=u0g2D;u_tf1k036@?J1kSd)j4rN4=TkahweGg|yf? zD#=sRM*U$c)44IQW#9GwAjekh?$}QACEUftt&>}JMBVkm7+=px(7*3X_^JsvOQs@V z({~W8{KL2goqpj^wHZ)JqL9TgT~n2OUmtHt-T>pJ6}YQKs<1 zAxYlcrXB4As+EQk_bz=mUgvkOPrUZ<`rm#KHh@MCV1974A3;paWLLrF$ygoKLkS1{X8D^hR=_3#B`RT%;_E5QL#^Vx)) zX$LlZRXxKh9h2|N?aS%XS6_L9={9F(6H1H8rcdCBtZvl6($+%|xiQ0W&{kJ%t1VQK zp;Xs4*<}NEO_-Mrr5%VkVZEa0u+wApm+1?=)9lSH)n7tP)1PpM87OT`5|fp_NgB6y zI3C-;E7C|US|j_RJufp}!CdEo9drd1Vmv38=&i|EMKNG0Qni>Z>QiHk@3Y9R6Os4p zBqo@v3}R#(6=-e~iGV`nNDhn8N?q;>71rRpS{c_5hW&Wv!PaotUO z?B(EkqXMTcSH)AQ_v=0840%=h(b?`I5pJ4hgI_0fK+21qpU}Z~Nv`6lui1crLCqhBo)%4W$rV`k z`aXN%9~3)qeXQbe&?8nrZH~6lDE<_8a59N^j8)1J;EVEp(u;$Ln1&18jdGffPfO>Z zws=qT*oWJbenuoFq@tv@U_p0{J53G|r4wWBX=eQkdwP%nXuYm0S>xj+f^X{RG*m4l zzcZjqOeWDs0C`$NoR5G0Hbc*~ba{4TjyJ)B9t)+~1YCfQd48~b(^IkyONYX6C*lQ8 zz4NQ&{hHo-1!TX@S=A>f(}3I693!pz?BmB-Pp{+us`u!#0ZoZ@>Tqew>GzGl>0hEn zvY}z3DIL~ge25LGRz`~S*kf0eVY^I(9@A!9K{OYG?&GOGYk88g&D}?XCkupmIx-#I z$iBkkC$uw9mP#kmI_RN*O@L)SFDtRLLINJg%i|0 z(KU%hre|!Yy$6MSP~2zlIaZ&=a~mQ3cGeeuyo_PkF=gjS!_}3#Ax4=cn3aDntuO~R zj)4-x3HrgxFE@}!;L>B%JLMfC8hz2v%!-Z^i#-Z2%I_U|$xBQ&TjCJBXs!tLQm&^+ zaF?EMd@#~sFb)7$M!A1%`QNG~*l`I4Hg~~yBKjkSOJelo>KfGc&SuUqj3PYrkj<@R zl_(V{rNr(A_X;OQF(!NHNq(TlnVwayY|$ag7w0I`Wj01Lj(~y|%3>ef+{iy6tPssu zkIsF`@%$C+DoJ~(+FUvn!y%OqBK?{hgy(onDSK;bj0IdiDCIpO{r$z+n@qUAd9Nn} z9N;+bpdQToi+&{^>BKeJzO=QpD3WNs6(^y?8PU*OJU{EX?!cu$W|MCpu&Kf$42+^^^gZ-MZ|6)=1Kfc%dtV9RruhdPy+M*O}W7;KgF(MakO-zPA7O z(_#O^V`RH82=feLMIVe*w}FS|guG<*y|i3yynM|)tU)T~UT#jVUQYHF)IQc8p7yRT sJRCwCylm8VUS4jV!knDW|F;8&tA{NoWy*#fa1fA!jH-0Kq*=s&0N(m%TL1t6 literal 10434 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

f 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 MB_R^uKNtu92hCR#+W-In diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_error_map-1.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_error_map-1.avif index e85644ba61126985abb78e9192e2ad18314034d4..324995c304ad51a3b33cdc584fed73f8715ebdc8 100644 GIT binary patch literal 49478 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

`?C@AB8>M?Bfh3n?XOk yD#RyaX%+vyZbZ4GjbS^8^EC&{0G6vmJh9E!*2UY!hrb6#H*O{JAFp literal 49057 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 delta 22 ecmeyO^+jt#F*7H-D5I*D)TbALn`@YV2m%0LQwUf9 diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_histogram-1_02.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_histogram-1_02.avif index 95dfdf42e3c381a2b2d7dccef04f8411e4755193..be5387aeee44b4786fe92079d4c2b6c91568b03a 100644 GIT binary patch delta 22 dcmeyV^;2s@F*7FzFQbZ-(OE{>%{9z_1p!!52PXgk delta 22 ecmeyV^;2s@F*7H-D5I*D)TbALn`@Z=3IYIOF9>G< diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_state_hinton-1.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_state_hinton-1.avif index f373534c6ed794e6f60424801f9aac986ed98947..67320f149383545fc42afd2631545083c183e1d6 100644 GIT binary patch delta 20 bcmZqEZquGn#mT|Ts3K)_mQi+NGqWfFIx__` delta 20 bcmZqEZquGn#mO$psH!FP=|$kiW@b?ULD2?t diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_state_paulivec-1.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-plot_state_paulivec-1.avif index 0ba6d175dc64ecc2a350f91462433c045bd0f78c..9e325143abf1f4d1d5b2570f22b2b9b5aaed42b1 100644 GIT binary patch delta 22 dcmexn_04KSJu@c%^l3|BmrAF2T}k4 delta 22 ecmexn_04KSJu@e}D5I*D)TbALn>(1_Ndf?57YLF7 diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-1.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-1.avif index 6da71f7fd02deeda14d2587d71259ab27779e09c..2dba106c8c984348e74402f2c6723902dfe4a0d5 100644 GIT binary patch literal 16195 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%0AGs;^&> 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

OMY|guXnde_Gs6a~ss#=xAHw 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 Ld@uKo$)o=T{sPy{ diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-2.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-2.avif index 35cc7977c765e46673e521927b254fcefd3fed38..035289fd85792b9bd4f55332ba576abb653fb5b1 100644 GIT binary patch literal 11154 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 GpZ+&j^V;bE literal 11025 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 Y$KJ`Dm*xGi1u_csJ;l2@cZ{C@8)?yR=l}o! diff --git a/public/docs/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-3.avif b/public/docs/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-3.avif index 453eb8ead2f396fafbbec3ac59b349d7001696cb..bff83056a89565ef02e3bdb4cf45fdfcf517b704 100644 GIT binary patch literal 26048 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 PL|8idzhwS=>ev4OLCi3{ literal 26530 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 diff --git a/public/docs/images/api/qiskit/dev/transpiler-10.avif b/public/docs/images/api/qiskit/dev/transpiler-10.avif index b5486b349ae6a8458efda884aaa607d0e82bdf42..c242276ca351d331452d6f6b2dec2a3d659bc700 100644 GIT binary patch literal 19256 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 diff --git a/public/docs/images/api/qiskit/dev/transpiler-9.avif b/public/docs/images/api/qiskit/dev/transpiler-9.avif index 1b7c6ad298e0eb92e832bb969138e04935fa39df..41300fe1bdfa413b3522d33074d2bbd6ceff8878 100644 GIT binary patch literal 24604 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 J5(CF?{t18(QU?G4 literal 25328 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 OppTjx79Kf$?cV^bb;(Qs diff --git a/public/docs/images/api/qiskit/dev/visualization-1.avif b/public/docs/images/api/qiskit/dev/visualization-1.avif index 8c3ded044595a63da8f1ffae5af438b17fe8fd06..1105f3250d075099c087cbbb83eeb9e6249881df 100644 GIT binary patch delta 22 dcmaDM_d;$%5HlwSFQbaYox=%+o1>X|c>q_m2FCyZ delta 22 dcmaDM_d;$%5HlycD5I)+iu05=o1>X|c>q>L2Gsxn diff --git a/public/docs/images/api/qiskit/dev/visualization-3.avif b/public/docs/images/api/qiskit/dev/visualization-3.avif index 5a25f82b845969aaf78f1ba302c7370765cdb28c..0cd1e6c0f74fcbf35afff186c1e987f687c69179 100644 GIT binary patch delta 22 dcmbO(J6(2zDl;bsFQbaMPfhKD&3eq4+yFyc1=s)p delta 22 dcmbO(J6(2zDl;d$D5I)+iu05=oAsD8xdBDl1~LEu diff --git a/scripts/config/api-html-artifacts.json b/scripts/config/api-html-artifacts.json index 8fc581d6db7..897d3c4457c 100644 --- a/scripts/config/api-html-artifacts.json +++ b/scripts/config/api-html-artifacts.json @@ -1,6 +1,6 @@ { "qiskit": { - "dev": "https://api.github.com/repos/Qiskit/qiskit/actions/artifacts/3573872792/zip", + "dev": "https://api.github.com/repos/Qiskit/qiskit/actions/artifacts/3748935205/zip", "2.1": "https://ibm.box.com/shared/static/mplc0lvu7mi2xwri9z3y0u0lr6z9ivwv.zip", "2.0": "https://ibm.box.com/shared/static/r3qdbe7yznpi300y12tvksrts9l0xavw.zip", "1.4": "https://ibm.box.com/shared/static/3jeou6yywet2d4no7pvjgvpvwhhfn9ru.zip", @@ -33,7 +33,7 @@ "0.19": "https://ibm.box.com/shared/static/wjoea4x5tnxd0l4lgo2v3kxnx6btxvvl.zip" }, "qiskit-ibm-runtime": { - "dev": "https://api.github.com/repos/Qiskit/qiskit-ibm-runtime/actions/artifacts/3564422081/zip", + "dev": "https://api.github.com/repos/Qiskit/qiskit-ibm-runtime/actions/artifacts/3693821326/zip", "0.41": "https://ibm.box.com/shared/static/eu5nc0ro07kogyki718oanyx56kkzlab.zip", "0.40": "https://ibm.box.com/shared/static/m2mkvy07d0ns2mz55jskxmfvs4ufzimu.zip", "0.39": "https://ibm.box.com/shared/static/5rcdw33un656ydr62q50gdbxmp46g5ii.zip", diff --git a/scripts/config/historical-pages-to-latest.json b/scripts/config/historical-pages-to-latest.json index 810db0e1b1c..55c7f3c0751 100644 --- a/scripts/config/historical-pages-to-latest.json +++ b/scripts/config/historical-pages-to-latest.json @@ -20930,7 +20930,14 @@ "2.0": { "qiskit.transpiler.passes.LightCone": "/" }, - "dev": {} + "dev": { + "qiskit.transpiler.passes.Error": "/", + "qiskit.transpiler.passes.LayoutTransformation": "/", + "qiskit.transpiler.passes.OptimizeSwapBeforeMeasure": "/", + "qiskit.transpiler.passes.ResourceEstimation": "/", + "qiskit.transpiler.passes.synthesis.hls_plugins.MCMTSynthesisXGate": "/", + "qiskit.transpiler.passes.synthesis.hls_plugins.MCXSynthesisNoAuxHP24": "/" + } }, "qiskit-ibm-runtime": { "0.14": { @@ -21701,6 +21708,7 @@ "qiskit-c": { "2.0": {}, "dev": { + "qk-elide-permutations-result": "/", "qk-transpiler-passes": "/", "qk-vf-2-layout-result": "/" }