From fe0c1dcf597bd647883ab94604d72e82bde6996e Mon Sep 17 00:00:00 2001 From: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com> Date: Fri, 3 May 2024 15:37:58 -0400 Subject: [PATCH] Generate Qiskit 1.1.0rc1 (#1295) --- docs/api/qiskit/dev/_package.json | 2 +- docs/api/qiskit/dev/_toc.json | 8 + docs/api/qiskit/dev/assembler.mdx | 6 +- docs/api/qiskit/dev/circuit.mdx | 48 +-- docs/api/qiskit/dev/circuit_classical.mdx | 202 +++++++++--- docs/api/qiskit/dev/circuit_library.mdx | 144 ++++----- docs/api/qiskit/dev/circuit_singleton.mdx | 8 +- docs/api/qiskit/dev/compiler.mdx | 8 +- docs/api/qiskit/dev/converters.mdx | 16 +- docs/api/qiskit/dev/dagcircuit.mdx | 4 +- docs/api/qiskit/dev/exceptions.mdx | 14 +- docs/api/qiskit/dev/index.mdx | 2 +- docs/api/qiskit/dev/passmanager.mdx | 2 +- docs/api/qiskit/dev/primitives.mdx | 10 +- docs/api/qiskit/dev/providers.mdx | 27 +- .../qiskit/dev/providers_fake_provider.mdx | 6 +- docs/api/qiskit/dev/pulse.mdx | 86 ++--- docs/api/qiskit/dev/qasm2.mdx | 16 +- docs/api/qiskit/dev/qasm3.mdx | 24 +- .../qiskit/dev/qiskit.assembler.RunConfig.mdx | 6 +- .../dev/qiskit.circuit.AnnotatedOperation.mdx | 27 +- .../qiskit/dev/qiskit.circuit.BreakLoopOp.mdx | 26 +- .../dev/qiskit.circuit.ContinueLoopOp.mdx | 26 +- .../dev/qiskit.circuit.ControlFlowOp.mdx | 38 ++- .../dev/qiskit.circuit.ControlledGate.mdx | 47 ++- .../dev/qiskit.circuit.EquivalenceLibrary.mdx | 16 +- .../qiskit/dev/qiskit.circuit.ForLoopOp.mdx | 38 ++- docs/api/qiskit/dev/qiskit.circuit.Gate.mdx | 47 ++- .../qiskit/dev/qiskit.circuit.IfElseOp.mdx | 38 ++- .../qiskit/dev/qiskit.circuit.Instruction.mdx | 26 +- .../dev/qiskit.circuit.InstructionSet.mdx | 8 +- .../qiskit/dev/qiskit.circuit.Operation.mdx | 2 +- .../qiskit/dev/qiskit.circuit.Parameter.mdx | 38 +-- .../qiskit.circuit.ParameterExpression.mdx | 38 +-- .../dev/qiskit.circuit.ParameterVector.mdx | 6 +- .../dev/qiskit.circuit.QuantumCircuit.mdx | 305 ++++++++++-------- .../dev/qiskit.circuit.SwitchCaseOp.mdx | 42 ++- .../qiskit/dev/qiskit.circuit.WhileLoopOp.mdx | 38 ++- ...it.classicalfunction.BooleanExpression.mdx | 53 ++- ...it.classicalfunction.ClassicalFunction.mdx | 55 ++-- ...ion.ClassicalFunctionCompilerTypeError.mdx | 2 +- ...alfunction.ClassicalFunctionParseError.mdx | 2 +- .../qiskit/dev/qiskit.circuit.library.AND.mdx | 4 +- .../dev/qiskit.circuit.library.C3SXGate.mdx | 4 +- .../dev/qiskit.circuit.library.C3XGate.mdx | 8 +- .../dev/qiskit.circuit.library.C4XGate.mdx | 8 +- .../dev/qiskit.circuit.library.CCXGate.mdx | 8 +- .../dev/qiskit.circuit.library.CCZGate.mdx | 4 +- ...t.circuit.library.CDKMRippleCarryAdder.mdx | 4 +- .../dev/qiskit.circuit.library.CHGate.mdx | 4 +- .../dev/qiskit.circuit.library.CPhaseGate.mdx | 25 +- .../dev/qiskit.circuit.library.CRXGate.mdx | 4 +- .../dev/qiskit.circuit.library.CRYGate.mdx | 4 +- .../dev/qiskit.circuit.library.CRZGate.mdx | 4 +- .../dev/qiskit.circuit.library.CSGate.mdx | 23 +- .../dev/qiskit.circuit.library.CSXGate.mdx | 2 +- .../dev/qiskit.circuit.library.CSdgGate.mdx | 23 +- .../dev/qiskit.circuit.library.CSwapGate.mdx | 4 +- .../dev/qiskit.circuit.library.CU1Gate.mdx | 6 +- .../dev/qiskit.circuit.library.CU3Gate.mdx | 4 +- .../dev/qiskit.circuit.library.CUGate.mdx | 4 +- .../dev/qiskit.circuit.library.CXGate.mdx | 8 +- .../dev/qiskit.circuit.library.CYGate.mdx | 4 +- .../dev/qiskit.circuit.library.CZGate.mdx | 4 +- .../dev/qiskit.circuit.library.DCXGate.mdx | 2 +- .../dev/qiskit.circuit.library.Diagonal.mdx | 4 +- .../qiskit.circuit.library.DiagonalGate.mdx | 6 +- .../qiskit.circuit.library.DraperQFTAdder.mdx | 4 +- .../dev/qiskit.circuit.library.ECRGate.mdx | 4 +- .../qiskit.circuit.library.EfficientSU2.mdx | 6 +- ....circuit.library.EvolvedOperatorAnsatz.mdx | 4 +- ...qiskit.circuit.library.ExactReciprocal.mdx | 4 +- ...t.circuit.library.ExcitationPreserving.mdx | 4 +- ...qiskit.circuit.library.FourierChecking.mdx | 4 +- ...rcuit.library.FunctionalPauliRotations.mdx | 4 +- .../qiskit/dev/qiskit.circuit.library.GMS.mdx | 4 +- .../qiskit/dev/qiskit.circuit.library.GR.mdx | 4 +- .../qiskit/dev/qiskit.circuit.library.GRX.mdx | 4 +- .../qiskit/dev/qiskit.circuit.library.GRY.mdx | 4 +- .../qiskit/dev/qiskit.circuit.library.GRZ.mdx | 4 +- ...qiskit.circuit.library.GlobalPhaseGate.mdx | 4 +- .../dev/qiskit.circuit.library.GraphState.mdx | 4 +- .../qiskit.circuit.library.GroverOperator.mdx | 4 +- .../dev/qiskit.circuit.library.HGate.mdx | 6 +- ...ircuit.library.HRSCumulativeMultiplier.mdx | 4 +- ...qiskit.circuit.library.HamiltonianGate.mdx | 12 +- ...t.circuit.library.HiddenLinearFunction.mdx | 4 +- .../dev/qiskit.circuit.library.IGate.mdx | 23 +- .../qiskit/dev/qiskit.circuit.library.IQP.mdx | 4 +- .../dev/qiskit.circuit.library.Initialize.mdx | 6 +- .../qiskit.circuit.library.InnerProduct.mdx | 4 +- ...skit.circuit.library.IntegerComparator.mdx | 4 +- .../dev/qiskit.circuit.library.Isometry.mdx | 8 +- ...ircuit.library.LinearAmplitudeFunction.mdx | 6 +- .../qiskit.circuit.library.LinearFunction.mdx | 16 +- ...t.circuit.library.LinearPauliRotations.mdx | 4 +- .../dev/qiskit.circuit.library.MCMT.mdx | 8 +- .../dev/qiskit.circuit.library.MCMTVChain.mdx | 6 +- .../qiskit.circuit.library.MCPhaseGate.mdx | 6 +- .../dev/qiskit.circuit.library.MCXGate.mdx | 10 +- .../qiskit.circuit.library.MCXGrayCode.mdx | 4 +- .../qiskit.circuit.library.MCXRecursive.mdx | 6 +- .../dev/qiskit.circuit.library.MCXVChain.mdx | 6 +- .../dev/qiskit.circuit.library.MSGate.mdx | 2 +- .../dev/qiskit.circuit.library.NLocal.mdx | 14 +- .../qiskit/dev/qiskit.circuit.library.OR.mdx | 4 +- ...kit.circuit.library.PauliEvolutionGate.mdx | 4 +- ...qiskit.circuit.library.PauliFeatureMap.mdx | 8 +- .../dev/qiskit.circuit.library.PauliGate.mdx | 6 +- .../qiskit.circuit.library.PauliTwoDesign.mdx | 4 +- .../qiskit.circuit.library.Permutation.mdx | 4 +- ...qiskit.circuit.library.PermutationGate.mdx | 6 +- ...qiskit.circuit.library.PhaseEstimation.mdx | 4 +- .../dev/qiskit.circuit.library.PhaseGate.mdx | 25 +- .../qiskit.circuit.library.PhaseOracle.mdx | 8 +- ...kit.circuit.library.PiecewiseChebyshev.mdx | 4 +- ....library.PiecewiseLinearPauliRotations.mdx | 6 +- ...rary.PiecewisePolynomialPauliRotations.mdx | 6 +- ...rcuit.library.PolynomialPauliRotations.mdx | 4 +- .../dev/qiskit.circuit.library.QAOAAnsatz.mdx | 4 +- .../qiskit/dev/qiskit.circuit.library.QFT.mdx | 8 +- .../qiskit.circuit.library.QuadraticForm.mdx | 6 +- .../qiskit.circuit.library.QuantumVolume.mdx | 5 +- .../dev/qiskit.circuit.library.RC3XGate.mdx | 2 +- .../dev/qiskit.circuit.library.RCCXGate.mdx | 2 +- ...qiskit.circuit.library.RGQFTMultiplier.mdx | 4 +- .../dev/qiskit.circuit.library.RGate.mdx | 23 +- .../dev/qiskit.circuit.library.RVGate.mdx | 6 +- .../dev/qiskit.circuit.library.RXGate.mdx | 25 +- .../dev/qiskit.circuit.library.RXXGate.mdx | 23 +- .../dev/qiskit.circuit.library.RYGate.mdx | 25 +- .../dev/qiskit.circuit.library.RYYGate.mdx | 23 +- .../dev/qiskit.circuit.library.RZGate.mdx | 25 +- .../dev/qiskit.circuit.library.RZXGate.mdx | 23 +- .../dev/qiskit.circuit.library.RZZGate.mdx | 23 +- .../qiskit.circuit.library.RealAmplitudes.mdx | 4 +- .../dev/qiskit.circuit.library.SGate.mdx | 23 +- .../dev/qiskit.circuit.library.SXGate.mdx | 6 +- .../dev/qiskit.circuit.library.SXdgGate.mdx | 4 +- .../dev/qiskit.circuit.library.SdgGate.mdx | 23 +- ...iskit.circuit.library.StatePreparation.mdx | 8 +- .../dev/qiskit.circuit.library.SwapGate.mdx | 6 +- .../dev/qiskit.circuit.library.TGate.mdx | 23 +- .../dev/qiskit.circuit.library.TdgGate.mdx | 23 +- .../dev/qiskit.circuit.library.TwoLocal.mdx | 6 +- .../dev/qiskit.circuit.library.U1Gate.mdx | 6 +- .../dev/qiskit.circuit.library.U2Gate.mdx | 4 +- .../dev/qiskit.circuit.library.U3Gate.mdx | 6 +- .../dev/qiskit.circuit.library.UCGate.mdx | 6 +- .../qiskit.circuit.library.UCPauliRotGate.mdx | 2 +- .../dev/qiskit.circuit.library.UCRXGate.mdx | 2 +- .../dev/qiskit.circuit.library.UCRYGate.mdx | 2 +- .../dev/qiskit.circuit.library.UCRZGate.mdx | 2 +- .../dev/qiskit.circuit.library.UGate.mdx | 6 +- .../qiskit.circuit.library.UnitaryGate.mdx | 15 +- .../qiskit.circuit.library.UnitaryOverlap.mdx | 12 +- ...it.circuit.library.VBERippleCarryAdder.mdx | 4 +- .../qiskit.circuit.library.WeightedAdder.mdx | 4 +- .../dev/qiskit.circuit.library.XGate.mdx | 8 +- .../qiskit/dev/qiskit.circuit.library.XOR.mdx | 4 +- .../qiskit.circuit.library.XXMinusYYGate.mdx | 23 +- .../qiskit.circuit.library.XXPlusYYGate.mdx | 23 +- .../dev/qiskit.circuit.library.YGate.mdx | 6 +- .../qiskit.circuit.library.ZFeatureMap.mdx | 4 +- .../dev/qiskit.circuit.library.ZGate.mdx | 25 +- .../qiskit.circuit.library.ZZFeatureMap.mdx | 4 +- .../dev/qiskit.circuit.library.iSwapGate.mdx | 21 +- .../dev/qiskit.dagcircuit.DAGCircuit.mdx | 290 ++++++++++++----- .../dev/qiskit.dagcircuit.DAGDepNode.mdx | 6 +- .../dev/qiskit.dagcircuit.DAGDependency.mdx | 46 +-- .../dev/qiskit.dagcircuit.DAGInNode.mdx | 4 +- .../qiskit/dev/qiskit.dagcircuit.DAGNode.mdx | 4 +- .../dev/qiskit.dagcircuit.DAGOpNode.mdx | 4 +- .../dev/qiskit.dagcircuit.DAGOutNode.mdx | 4 +- .../dev/qiskit.passmanager.BaseController.mdx | 6 +- .../qiskit.passmanager.BasePassManager.mdx | 12 +- ...skit.passmanager.ConditionalController.mdx | 6 +- .../qiskit.passmanager.DoWhileController.mdx | 6 +- ...iskit.passmanager.FlowControllerLinear.mdx | 6 +- .../dev/qiskit.passmanager.GenericPass.mdx | 10 +- .../qiskit.passmanager.PassManagerState.mdx | 2 +- .../dev/qiskit.passmanager.PropertySet.mdx | 2 +- .../dev/qiskit.passmanager.WorkflowStatus.mdx | 2 +- .../qiskit.primitives.BackendEstimator.mdx | 8 +- .../qiskit.primitives.BackendEstimatorV2.mdx | 4 +- .../dev/qiskit.primitives.BackendSampler.mdx | 8 +- .../qiskit.primitives.BackendSamplerV2.mdx | 6 +- .../dev/qiskit.primitives.BaseEstimator.mdx | 2 +- .../dev/qiskit.primitives.BaseEstimatorV1.mdx | 6 +- .../dev/qiskit.primitives.BaseEstimatorV2.mdx | 4 +- .../qiskit.primitives.BasePrimitiveJob.mdx | 18 +- .../dev/qiskit.primitives.BaseSampler.mdx | 2 +- .../dev/qiskit.primitives.BaseSamplerV1.mdx | 6 +- .../dev/qiskit.primitives.BaseSamplerV2.mdx | 6 +- .../qiskit/dev/qiskit.primitives.BitArray.mdx | 200 +++++++++++- .../qiskit/dev/qiskit.primitives.DataBin.mdx | 72 ++++- .../dev/qiskit.primitives.Estimator.mdx | 6 +- .../dev/qiskit.primitives.EstimatorResult.mdx | 2 +- .../dev/qiskit.primitives.PrimitiveJob.mdx | 18 +- .../dev/qiskit.primitives.PrimitiveResult.mdx | 2 +- .../dev/qiskit.primitives.PubResult.mdx | 2 +- .../qiskit/dev/qiskit.primitives.Sampler.mdx | 6 +- .../dev/qiskit.primitives.SamplerResult.mdx | 2 +- ...qiskit.primitives.StatevectorEstimator.mdx | 4 +- .../qiskit.primitives.StatevectorSampler.mdx | 6 +- .../qiskit/dev/qiskit.providers.Backend.mdx | 2 +- .../qiskit/dev/qiskit.providers.BackendV1.mdx | 22 +- .../qiskit/dev/qiskit.providers.BackendV2.mdx | 18 +- .../qiskit.providers.BackendV2Converter.mdx | 16 +- docs/api/qiskit/dev/qiskit.providers.Job.mdx | 2 +- .../qiskit/dev/qiskit.providers.JobStatus.mdx | 2 +- .../api/qiskit/dev/qiskit.providers.JobV1.mdx | 24 +- .../qiskit/dev/qiskit.providers.Options.mdx | 6 +- .../qiskit/dev/qiskit.providers.Provider.mdx | 6 +- .../dev/qiskit.providers.ProviderV1.mdx | 14 +- .../dev/qiskit.providers.QubitProperties.mdx | 2 +- ...providers.basic_provider.BasicProvider.mdx | 14 +- ...ders.basic_provider.BasicProviderError.mdx | 2 +- ...viders.basic_provider.BasicProviderJob.mdx | 24 +- ...roviders.basic_provider.BasicSimulator.mdx | 20 +- .../qiskit.providers.convert_to_target.mdx | 2 +- ...roviders.fake_provider.Fake127QPulseV1.mdx | 18 +- .../qiskit.providers.fake_provider.Fake1Q.mdx | 16 +- ...skit.providers.fake_provider.Fake20QV1.mdx | 16 +- ...providers.fake_provider.Fake27QPulseV1.mdx | 18 +- ...iskit.providers.fake_provider.Fake5QV1.mdx | 16 +- ....providers.fake_provider.Fake7QPulseV1.mdx | 18 +- ...roviders.fake_provider.FakeOpenPulse2Q.mdx | 18 +- ...roviders.fake_provider.FakeOpenPulse3Q.mdx | 18 +- ...oviders.fake_provider.GenericBackendV2.mdx | 16 +- ....providers.models.BackendConfiguration.mdx | 6 +- ...kit.providers.models.BackendProperties.mdx | 32 +- .../qiskit.providers.models.BackendStatus.mdx | 6 +- .../dev/qiskit.providers.models.Command.mdx | 6 +- .../qiskit.providers.models.GateConfig.mdx | 6 +- ...qiskit.providers.models.GateProperties.mdx | 6 +- .../dev/qiskit.providers.models.JobStatus.mdx | 6 +- .../dev/qiskit.providers.models.Nduv.mdx | 6 +- ...iders.models.PulseBackendConfiguration.mdx | 20 +- .../qiskit.providers.models.PulseDefaults.mdx | 6 +- ...viders.models.QasmBackendConfiguration.mdx | 6 +- .../qiskit.providers.models.UchannelLO.mdx | 6 +- .../qiskit.pulse.InstructionScheduleMap.mdx | 22 +- docs/api/qiskit/dev/qiskit.pulse.Schedule.mdx | 44 +-- .../qiskit/dev/qiskit.pulse.ScheduleBlock.mdx | 40 +-- .../qiskit.pulse.channels.AcquireChannel.mdx | 4 +- .../qiskit.pulse.channels.ControlChannel.mdx | 4 +- .../qiskit.pulse.channels.DriveChannel.mdx | 4 +- .../qiskit.pulse.channels.MeasureChannel.mdx | 4 +- .../dev/qiskit.pulse.channels.MemorySlot.mdx | 4 +- .../qiskit.pulse.channels.RegisterSlot.mdx | 4 +- .../qiskit.pulse.channels.SnapshotChannel.mdx | 4 +- .../dev/qiskit.pulse.instructions.Acquire.mdx | 16 +- .../dev/qiskit.pulse.instructions.Delay.mdx | 16 +- .../dev/qiskit.pulse.instructions.Play.mdx | 16 +- .../qiskit.pulse.instructions.Reference.mdx | 16 +- ...kit.pulse.instructions.RelativeBarrier.mdx | 16 +- ...qiskit.pulse.instructions.SetFrequency.mdx | 16 +- .../qiskit.pulse.instructions.SetPhase.mdx | 16 +- ...skit.pulse.instructions.ShiftFrequency.mdx | 16 +- .../qiskit.pulse.instructions.ShiftPhase.mdx | 16 +- .../qiskit.pulse.instructions.Snapshot.mdx | 16 +- ...qiskit.pulse.instructions.TimeBlockade.mdx | 16 +- ...iskit.pulse.library.Constant_class.rst.mdx | 2 +- .../qiskit.pulse.library.Cos_class.rst.mdx | 2 +- .../qiskit.pulse.library.Drag_class.rst.mdx | 2 +- .../qiskit.pulse.library.GaussianDeriv.mdx | 2 +- .../qiskit.pulse.library.GaussianSquare.mdx | 2 +- ...iskit.pulse.library.GaussianSquareDrag.mdx | 2 +- ...iskit.pulse.library.Gaussian_class.rst.mdx | 2 +- ...iskit.pulse.library.Sawtooth_class.rst.mdx | 2 +- .../dev/qiskit.pulse.library.SechDeriv.mdx | 2 +- .../dev/qiskit.pulse.library.Sech_fun.rst.mdx | 2 +- .../qiskit.pulse.library.Sin_class.rst.mdx | 2 +- .../qiskit.pulse.library.Square_fun.rst.mdx | 2 +- .../qiskit.pulse.library.SymbolicPulse.mdx | 10 +- ...iskit.pulse.library.Triangle_class.rst.mdx | 2 +- .../dev/qiskit.pulse.library.Waveform.mdx | 6 +- ...kit.pulse.library.gaussian_square_echo.mdx | 2 +- ...iskit.pulse.transforms.AlignEquispaced.mdx | 4 +- .../dev/qiskit.pulse.transforms.AlignFunc.mdx | 4 +- .../dev/qiskit.pulse.transforms.AlignLeft.mdx | 4 +- .../qiskit.pulse.transforms.AlignRight.mdx | 4 +- ...iskit.pulse.transforms.AlignSequential.mdx | 4 +- .../dev/qiskit.qobj.GateCalibration.mdx | 6 +- .../dev/qiskit.qobj.PulseLibraryItem.mdx | 6 +- docs/api/qiskit/dev/qiskit.qobj.PulseQobj.mdx | 6 +- .../dev/qiskit.qobj.PulseQobjConfig.mdx | 6 +- .../dev/qiskit.qobj.PulseQobjExperiment.mdx | 6 +- .../qiskit.qobj.PulseQobjExperimentConfig.mdx | 6 +- .../dev/qiskit.qobj.PulseQobjInstruction.mdx | 6 +- ...qiskit.qobj.QasmExperimentCalibrations.mdx | 6 +- docs/api/qiskit/dev/qiskit.qobj.QasmQobj.mdx | 6 +- .../qiskit/dev/qiskit.qobj.QasmQobjConfig.mdx | 6 +- .../dev/qiskit.qobj.QasmQobjExperiment.mdx | 6 +- .../qiskit.qobj.QasmQobjExperimentConfig.mdx | 6 +- .../dev/qiskit.qobj.QasmQobjInstruction.mdx | 6 +- .../dev/qiskit.qobj.QobjExperimentHeader.mdx | 6 +- .../api/qiskit/dev/qiskit.qobj.QobjHeader.mdx | 6 +- .../dev/qiskit.qobj.QobjMeasurementOption.mdx | 6 +- .../dev/qiskit.quantum_info.CNOTDihedral.mdx | 34 +- .../qiskit/dev/qiskit.quantum_info.Chi.mdx | 38 +-- .../qiskit/dev/qiskit.quantum_info.Choi.mdx | 38 +-- .../dev/qiskit.quantum_info.Clifford.mdx | 64 ++-- .../dev/qiskit.quantum_info.DensityMatrix.mdx | 54 ++-- .../qiskit/dev/qiskit.quantum_info.Kraus.mdx | 38 +-- .../dev/qiskit.quantum_info.Operator.mdx | 48 +-- .../qiskit/dev/qiskit.quantum_info.PTM.mdx | 38 +-- .../qiskit/dev/qiskit.quantum_info.Pauli.mdx | 67 ++-- .../dev/qiskit.quantum_info.PauliList.mdx | 66 ++-- .../dev/qiskit.quantum_info.Quaternion.mdx | 14 +- .../dev/qiskit.quantum_info.ScalarOp.mdx | 32 +- .../dev/qiskit.quantum_info.SparsePauliOp.mdx | 67 ++-- .../qiskit.quantum_info.StabilizerState.mdx | 42 +-- .../dev/qiskit.quantum_info.Statevector.mdx | 54 ++-- .../dev/qiskit.quantum_info.Stinespring.mdx | 38 +-- .../dev/qiskit.quantum_info.SuperOp.mdx | 38 +-- .../dev/qiskit.quantum_info.Z2Symmetries.mdx | 12 +- .../dev/qiskit.quantum_info.pauli_basis.mdx | 2 +- .../qiskit.result.BaseReadoutMitigator.mdx | 6 +- ...skit.result.CorrelatedReadoutMitigator.mdx | 12 +- docs/api/qiskit/dev/qiskit.result.Counts.mdx | 10 +- .../qiskit.result.LocalReadoutMitigator.mdx | 12 +- .../dev/qiskit.result.ProbDistribution.mdx | 6 +- .../dev/qiskit.result.QuasiDistribution.mdx | 8 +- docs/api/qiskit/dev/qiskit.result.Result.mdx | 16 +- .../qiskit/dev/qiskit.result.ResultError.mdx | 2 +- .../qiskit.synthesis.EvolutionSynthesis.mdx | 4 +- .../dev/qiskit.synthesis.LieTrotter.mdx | 4 +- .../qiskit.synthesis.MatrixExponential.mdx | 4 +- ...skit.synthesis.OneQubitEulerDecomposer.mdx | 10 +- .../dev/qiskit.synthesis.ProductFormula.mdx | 4 +- .../qiskit/dev/qiskit.synthesis.QDrift.mdx | 4 +- ...t.synthesis.SolovayKitaevDecomposition.mdx | 8 +- .../dev/qiskit.synthesis.SuzukiTrotter.mdx | 4 +- ...skit.synthesis.TwoQubitBasisDecomposer.mdx | 17 +- ...it.synthesis.TwoQubitWeylDecomposition.mdx | 10 +- .../dev/qiskit.synthesis.XXDecomposer.mdx | 7 +- .../dev/qiskit.synthesis.unitary.aqc.AQC.mdx | 4 +- ...nthesis.unitary.aqc.ApproximateCircuit.mdx | 6 +- ...sis.unitary.aqc.ApproximatingObjective.mdx | 6 +- ....synthesis.unitary.aqc.CNOTUnitCircuit.mdx | 6 +- ...ynthesis.unitary.aqc.CNOTUnitObjective.mdx | 2 +- ...s.unitary.aqc.DefaultCNOTUnitObjective.mdx | 6 +- ...esis.unitary.aqc.FastCNOTUnitObjective.mdx | 6 +- .../dev/qiskit.synthesis.unitary.aqc.mdx | 2 +- .../dev/qiskit.transpiler.AnalysisPass.mdx | 10 +- .../dev/qiskit.transpiler.CouplingMap.mdx | 44 +-- ...qiskit.transpiler.InstructionDurations.mdx | 10 +- ...iskit.transpiler.InstructionProperties.mdx | 2 +- .../qiskit/dev/qiskit.transpiler.Layout.mdx | 36 +-- .../dev/qiskit.transpiler.PassManager.mdx | 14 +- .../qiskit.transpiler.PassManagerConfig.mdx | 4 +- .../qiskit.transpiler.StagedPassManager.mdx | 14 +- .../qiskit/dev/qiskit.transpiler.Target.mdx | 42 +-- .../qiskit.transpiler.TransformationPass.mdx | 10 +- .../dev/qiskit.transpiler.TranspileLayout.mdx | 12 +- .../qiskit.transpiler.passes.ALAPSchedule.mdx | 10 +- ...transpiler.passes.ALAPScheduleAnalysis.mdx | 10 +- .../qiskit.transpiler.passes.ASAPSchedule.mdx | 10 +- ...transpiler.passes.ASAPScheduleAnalysis.mdx | 10 +- ...qiskit.transpiler.passes.AlignMeasures.mdx | 10 +- .../qiskit.transpiler.passes.ApplyLayout.mdx | 10 +- ....passes.BarrierBeforeFinalMeasurements.mdx | 10 +- .../qiskit.transpiler.passes.BasicSwap.mdx | 10 +- ...skit.transpiler.passes.BasisTranslator.mdx | 10 +- .../qiskit.transpiler.passes.CSPLayout.mdx | 10 +- ...iskit.transpiler.passes.CXCancellation.mdx | 10 +- ...t.transpiler.passes.CheckGateDirection.mdx | 10 +- .../dev/qiskit.transpiler.passes.CheckMap.mdx | 10 +- ...qiskit.transpiler.passes.Collect1qRuns.mdx | 10 +- ...skit.transpiler.passes.Collect2qBlocks.mdx | 10 +- ...kit.transpiler.passes.CollectCliffords.mdx | 10 +- ...anspiler.passes.CollectLinearFunctions.mdx | 10 +- ....transpiler.passes.CollectMultiQBlocks.mdx | 14 +- ....transpiler.passes.CommutationAnalysis.mdx | 10 +- ...nspiler.passes.CommutativeCancellation.mdx | 10 +- ....passes.CommutativeInverseCancellation.mdx | 10 +- ...ranspiler.passes.Commuting2qGateRouter.mdx | 12 +- ...it.transpiler.passes.ConsolidateBlocks.mdx | 10 +- ...ranspiler.passes.ConstrainedReschedule.mdx | 10 +- ....transpiler.passes.ContainsInstruction.mdx | 10 +- ...spiler.passes.ConvertConditionsToIfOps.mdx | 10 +- .../dev/qiskit.transpiler.passes.CountOps.mdx | 10 +- ....transpiler.passes.CountOpsLongestPath.mdx | 10 +- ...qiskit.transpiler.passes.DAGFixedPoint.mdx | 10 +- ...iskit.transpiler.passes.DAGLongestPath.mdx | 10 +- .../qiskit.transpiler.passes.Decompose.mdx | 10 +- .../qiskit.transpiler.passes.DenseLayout.mdx | 10 +- .../dev/qiskit.transpiler.passes.Depth.mdx | 10 +- ....transpiler.passes.DynamicalDecoupling.mdx | 10 +- ...spiler.passes.EchoRZXWeylDecomposition.mdx | 10 +- ...it.transpiler.passes.ElidePermutations.mdx | 119 +++++++ ...t.transpiler.passes.EnlargeWithAncilla.mdx | 10 +- ...qiskit.transpiler.passes.FilterOpNodes.mdx | 10 +- .../qiskit.transpiler.passes.FixedPoint.mdx | 10 +- ...ranspiler.passes.FullAncillaAllocation.mdx | 12 +- ...qiskit.transpiler.passes.GateDirection.mdx | 10 +- .../qiskit.transpiler.passes.GatesInBasis.mdx | 10 +- .../qiskit.transpiler.passes.HLSConfig.mdx | 6 +- ...t.transpiler.passes.HighLevelSynthesis.mdx | 10 +- ...iskit.transpiler.passes.HoareOptimizer.mdx | 10 +- ...spiler.passes.InstructionDurationCheck.mdx | 10 +- ....transpiler.passes.InverseCancellation.mdx | 10 +- ...kit.transpiler.passes.Layout2qDistance.mdx | 10 +- ...r.passes.LinearFunctionsToPermutations.mdx | 10 +- ...qiskit.transpiler.passes.LookaheadSwap.mdx | 10 +- ...ranspiler.passes.MergeAdjacentBarriers.mdx | 10 +- .../qiskit.transpiler.passes.MinimumPoint.mdx | 10 +- ...kit.transpiler.passes.NormalizeRXAngle.mdx | 12 +- ...kit.transpiler.passes.NumTensorFactors.mdx | 10 +- ...skit.transpiler.passes.Optimize1qGates.mdx | 14 +- ...er.passes.Optimize1qGatesDecomposition.mdx | 10 +- ...asses.Optimize1qGatesSimpleCommutation.mdx | 10 +- ...it.transpiler.passes.OptimizeAnnotated.mdx | 12 +- ...it.transpiler.passes.OptimizeCliffords.mdx | 10 +- .../dev/qiskit.transpiler.passes.PadDelay.mdx | 10 +- ...anspiler.passes.PadDynamicalDecoupling.mdx | 10 +- .../qiskit.transpiler.passes.PulseGates.mdx | 14 +- ...transpiler.passes.RXCalibrationBuilder.mdx | 14 +- ...ranspiler.passes.RZXCalibrationBuilder.mdx | 16 +- ...ler.passes.RZXCalibrationBuilderNoEcho.mdx | 16 +- ...iskit.transpiler.passes.RemoveBarriers.mdx | 10 +- ...asses.RemoveDiagonalGatesBeforeMeasure.mdx | 10 +- ...nspiler.passes.RemoveFinalMeasurements.mdx | 10 +- ...kit.transpiler.passes.RemoveFinalReset.mdx | 10 +- ...anspiler.passes.RemoveResetInZeroState.mdx | 10 +- ...passes.ResetAfterMeasureSimplification.mdx | 10 +- .../qiskit.transpiler.passes.SabreLayout.mdx | 10 +- ...iskit.transpiler.passes.SabrePreLayout.mdx | 10 +- .../qiskit.transpiler.passes.SabreSwap.mdx | 10 +- .../qiskit.transpiler.passes.SetIOLatency.mdx | 10 +- .../qiskit.transpiler.passes.SetLayout.mdx | 10 +- .../dev/qiskit.transpiler.passes.Size.mdx | 10 +- ...qiskit.transpiler.passes.SolovayKitaev.mdx | 10 +- ...iskit.transpiler.passes.StarPreRouting.mdx | 164 ++++++++++ ...iskit.transpiler.passes.StochasticSwap.mdx | 10 +- ...transpiler.passes.TemplateOptimization.mdx | 10 +- ...t.transpiler.passes.TimeUnitConversion.mdx | 10 +- ...ler.passes.TranslateParameterizedGates.mdx | 10 +- ...qiskit.transpiler.passes.TrivialLayout.mdx | 10 +- ...kit.transpiler.passes.UnitarySynthesis.mdx | 10 +- ...iskit.transpiler.passes.Unroll3qOrMore.mdx | 10 +- ...nspiler.passes.UnrollCustomDefinitions.mdx | 10 +- ...iskit.transpiler.passes.UnrollForLoops.mdx | 10 +- .../qiskit.transpiler.passes.VF2Layout.mdx | 10 +- ...qiskit.transpiler.passes.VF2PostLayout.mdx | 10 +- ...t.transpiler.passes.ValidatePulseGates.mdx | 10 +- .../dev/qiskit.transpiler.passes.Width.mdx | 10 +- ...ynthesis.aqc_plugin.AQCSynthesisPlugin.mdx | 4 +- ...evel_synthesis.ACGSynthesisPermutation.mdx | 4 +- ...gh_level_synthesis.AGSynthesisClifford.mdx | 4 +- ...gh_level_synthesis.BMSynthesisClifford.mdx | 4 +- ...el_synthesis.BasicSynthesisPermutation.mdx | 4 +- ...vel_synthesis.DefaultSynthesisClifford.mdx | 4 +- ...nthesis.DefaultSynthesisLinearFunction.mdx | 4 +- ...evel_synthesis.GreedySynthesisClifford.mdx | 4 +- ...l_synthesis.KMSSynthesisLinearFunction.mdx | 14 +- ...evel_synthesis.KMSSynthesisPermutation.mdx | 4 +- ...el_synthesis.LayerLnnSynthesisClifford.mdx | 4 +- ...level_synthesis.LayerSynthesisClifford.mdx | 4 +- ...l_synthesis.PMHSynthesisLinearFunction.mdx | 20 +- ...hesis.TokenSwapperSynthesisPermutation.mdx | 4 +- ...thesis.plugin.HighLevelSynthesisPlugin.mdx | 4 +- ...plugin.HighLevelSynthesisPluginManager.mdx | 6 +- ...ynthesis.plugin.UnitarySynthesisPlugin.mdx | 4 +- ...s.plugin.UnitarySynthesisPluginManager.mdx | 2 +- ...ugin.high_level_synthesis_plugin_names.mdx | 2 +- ....plugin.unitary_synthesis_plugin_names.mdx | 2 +- ...itaev_synthesis.SolovayKitaevSynthesis.mdx | 4 +- ...tary_synthesis.DefaultUnitarySynthesis.mdx | 4 +- ...managers.plugin.PassManagerStagePlugin.mdx | 4 +- ...s.plugin.PassManagerStagePluginManager.mdx | 4 +- .../qiskit.visualization.array_to_latex.mdx | 2 +- .../qiskit.visualization.circuit_drawer.mdx | 2 +- .../dev/qiskit.visualization.dag_drawer.mdx | 2 +- ...skit.visualization.pass_manager_drawer.mdx | 2 +- ...t.visualization.plot_bloch_multivector.mdx | 2 +- ...qiskit.visualization.plot_bloch_vector.mdx | 2 +- ...skit.visualization.plot_circuit_layout.mdx | 2 +- ...qiskit.visualization.plot_coupling_map.mdx | 2 +- ...qiskit.visualization.plot_distribution.mdx | 2 +- .../qiskit.visualization.plot_error_map.mdx | 2 +- .../qiskit.visualization.plot_gate_map.mdx | 2 +- .../qiskit.visualization.plot_histogram.mdx | 2 +- .../qiskit.visualization.plot_state_city.mdx | 2 +- ...qiskit.visualization.plot_state_hinton.mdx | 2 +- ...skit.visualization.plot_state_paulivec.mdx | 2 +- ...iskit.visualization.plot_state_qsphere.mdx | 2 +- .../qiskit.visualization.timeline_drawer.mdx | 22 +- ...kit.visualization.visualize_transition.mdx | 2 +- docs/api/qiskit/dev/qpy.mdx | 127 ++++++-- docs/api/qiskit/dev/quantum_info.mdx | 54 ++-- docs/api/qiskit/dev/result.mdx | 8 +- docs/api/qiskit/dev/scheduler.mdx | 8 +- docs/api/qiskit/dev/synthesis.mdx | 72 +++-- docs/api/qiskit/dev/transpiler.mdx | 12 +- docs/api/qiskit/dev/transpiler_passes.mdx | 6 +- docs/api/qiskit/dev/transpiler_plugins.mdx | 4 +- docs/api/qiskit/dev/transpiler_preset.mdx | 28 +- docs/api/qiskit/dev/utils.mdx | 36 +-- docs/api/qiskit/dev/visualization.mdx | 2 +- public/api/qiskit/dev/objects.inv | Bin 69331 -> 69949 bytes public/images/api/qiskit/dev/circuit-3.png | Bin 9304 -> 7947 bytes .../dev/providers_fake_provider-1_02.png | Bin 10941 -> 11439 bytes public/images/api/qiskit/dev/pulse-2.png | Bin 10716 -> 10732 bytes public/images/api/qiskit/dev/pulse-3.png | Bin 59407 -> 59375 bytes public/images/api/qiskit/dev/pulse-4.png | Bin 18989 -> 19004 bytes public/images/api/qiskit/dev/pulse-5.png | Bin 16294 -> 16358 bytes public/images/api/qiskit/dev/pulse-6.png | Bin 11372 -> 11363 bytes public/images/api/qiskit/dev/pulse-7.png | Bin 13921 -> 14012 bytes .../dev/qiskit-circuit-ControlledGate-2.png | Bin 7178 -> 7240 bytes ...skit-circuit-library-PermutationGate-2.png | Bin 16028 -> 16100 bytes ...skit-circuit-library-PhaseEstimation-1.png | Bin 12189 -> 12197 bytes ...qiskit-circuit-library-QuantumVolume-2.png | Bin 19385 -> 20781 bytes ...kit-transpiler-passes-StarPreRouting-1.png | Bin 0 -> 49789 bytes ...it-visualization-plot_circuit_layout-1.png | Bin 10056 -> 10381 bytes .../qiskit-visualization-plot_error_map-1.png | Bin 49643 -> 49079 bytes ...qiskit-visualization-timeline_drawer-1.png | Bin 15891 -> 16008 bytes ...qiskit-visualization-timeline_drawer-2.png | Bin 8470 -> 8026 bytes ...qiskit-visualization-timeline_drawer-3.png | Bin 26333 -> 26833 bytes .../images/api/qiskit/dev/release_notes-1.png | Bin 8695 -> 13722 bytes .../images/api/qiskit/dev/release_notes-2.png | Bin 7530 -> 11731 bytes .../images/api/qiskit/dev/release_notes-3.png | Bin 7069 -> 8695 bytes .../images/api/qiskit/dev/release_notes-4.png | Bin 0 -> 7530 bytes .../images/api/qiskit/dev/release_notes-5.png | Bin 0 -> 7069 bytes .../images/api/qiskit/dev/transpiler-16.png | Bin 24996 -> 24800 bytes .../images/api/qiskit/dev/transpiler-17.png | Bin 18958 -> 19005 bytes scripts/api-html-artifacts.json | 2 +- scripts/commands/checkInternalLinks.ts | 1 + scripts/lib/links/ignores.ts | 13 +- 531 files changed, 4337 insertions(+), 2901 deletions(-) create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.ElidePermutations.mdx create mode 100644 docs/api/qiskit/dev/qiskit.transpiler.passes.StarPreRouting.mdx create mode 100644 public/images/api/qiskit/dev/qiskit-transpiler-passes-StarPreRouting-1.png create mode 100644 public/images/api/qiskit/dev/release_notes-4.png create mode 100644 public/images/api/qiskit/dev/release_notes-5.png diff --git a/docs/api/qiskit/dev/_package.json b/docs/api/qiskit/dev/_package.json index 7411a89f078..4455624f40c 100644 --- a/docs/api/qiskit/dev/_package.json +++ b/docs/api/qiskit/dev/_package.json @@ -1,4 +1,4 @@ { "name": "qiskit", - "version": "1.1.0-dev" + "version": "1.1.0rc1" } diff --git a/docs/api/qiskit/dev/_toc.json b/docs/api/qiskit/dev/_toc.json index 7735438185d..0d406b86e9b 100644 --- a/docs/api/qiskit/dev/_toc.json +++ b/docs/api/qiskit/dev/_toc.json @@ -1724,6 +1724,10 @@ "title": "EchoRZXWeylDecomposition", "url": "/api/qiskit/dev/qiskit.transpiler.passes.EchoRZXWeylDecomposition" }, + { + "title": "ElidePermutations", + "url": "/api/qiskit/dev/qiskit.transpiler.passes.ElidePermutations" + }, { "title": "EnlargeWithAncilla", "url": "/api/qiskit/dev/qiskit.transpiler.passes.EnlargeWithAncilla" @@ -1920,6 +1924,10 @@ "title": "SolovayKitaevSynthesis", "url": "/api/qiskit/dev/qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.SolovayKitaevSynthesis" }, + { + "title": "StarPreRouting", + "url": "/api/qiskit/dev/qiskit.transpiler.passes.StarPreRouting" + }, { "title": "StochasticSwap", "url": "/api/qiskit/dev/qiskit.transpiler.passes.StochasticSwap" diff --git a/docs/api/qiskit/dev/assembler.mdx b/docs/api/qiskit/dev/assembler.mdx index d09ade00daf..cff940fae72 100644 --- a/docs/api/qiskit/dev/assembler.mdx +++ b/docs/api/qiskit/dev/assembler.mdx @@ -22,7 +22,7 @@ python_api_name: qiskit.assembler ### assemble\_circuits - + Assembles a list of circuits into a qobj that can be run on the backend. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.assembler ### assemble\_schedules - + Assembles a list of schedules into a qobj that can be run on the backend. **Parameters** @@ -129,7 +129,7 @@ python_api_name: qiskit.assembler ### disassemble - + Disassemble a qobj and return the circuits or pulse schedules, run\_config, and user header. diff --git a/docs/api/qiskit/dev/circuit.mdx b/docs/api/qiskit/dev/circuit.mdx index c007e6abd35..54e52cdf442 100644 --- a/docs/api/qiskit/dev/circuit.mdx +++ b/docs/api/qiskit/dev/circuit.mdx @@ -257,7 +257,7 @@ Internally, a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.Q Qubits and classical bits are represented by a shared base [`Bit`](#qiskit.circuit.Bit "qiskit.circuit.Bit") type, which is just intended to be a “type tag”; the classes have no behavior other than being immutable objects: - + Implement a generic bit. @@ -267,13 +267,13 @@ Qubits and classical bits are represented by a shared base [`Bit`](#qiskit.circu Create a new generic bit. - + Bases: [`Bit`](#qiskit.circuit.Bit "qiskit.circuit.bit.Bit") Implement a quantum bit. - + Bases: [`Bit`](#qiskit.circuit.Bit "qiskit.circuit.bit.Bit") Implement a classical bit. @@ -281,7 +281,7 @@ Qubits and classical bits are represented by a shared base [`Bit`](#qiskit.circu Qubits and clbits are instantiated by users with no arguments, such as by `Qubit()`. Bits compare equal if they are the same Python object, or if they were both created by a register of the same name and size, and they refer to the same index within that register. There is also a special type tag for “ancilla” qubits, but this is little used in the current state of Qiskit: - + Bases: [`Qubit`](#qiskit.circuit.Qubit "qiskit.circuit.quantumregister.Qubit") A qubit used as ancillary qubit. @@ -289,7 +289,7 @@ Qubits and clbits are instantiated by users with no arguments, such as by `Qubit A collection bits of the same type can be encapsulated in a register of the matching type. The base functionality is in a base class that is not directly instantiated: - + Implement a generic register. @@ -316,7 +316,7 @@ A collection bits of the same type can be encapsulated in a register of the matc ### index - + Find the index of the provided bit within this register. @@ -335,19 +335,19 @@ A collection bits of the same type can be encapsulated in a register of the matc Each of the defined bit subtypes has an associated register, which have the same constructor signatures, methods and properties as the base class: - + Bases: [`Register`](#qiskit.circuit.Register "qiskit.circuit.register.Register") Implement a quantum register. - + Bases: [`Register`](#qiskit.circuit.Register "qiskit.circuit.register.Register") Implement a classical register. - + Bases: [`QuantumRegister`](#qiskit.circuit.QuantumRegister "qiskit.circuit.quantumregister.QuantumRegister") Implement an ancilla register. @@ -421,15 +421,15 @@ Each of [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") The available modifiers for [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation") are: - + Inverse modifier: specifies that the operation is inverted. - + Control modifier: specifies that the operation is controlled by `num_ctrl_qubits` and has control state `ctrl_state`. - + Power modifier: specifies that the operation is raised to the power `power`. @@ -441,7 +441,7 @@ Qiskit contains a few [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit Measurements in Qiskit are of a single [`Qubit`](#qiskit.circuit.Qubit "qiskit.circuit.Qubit") into a single [`Clbit`](#qiskit.circuit.Clbit "qiskit.circuit.Clbit"). These are the two that the instruction is applied to. Measurements are in the computational basis. - + Bases: [`SingletonInstruction`](circuit_singleton#qiskit.circuit.singleton.SingletonInstruction "qiskit.circuit.singleton.SingletonInstruction") Quantum measurement in the computational basis. @@ -453,7 +453,7 @@ Measurements in Qiskit are of a single [`Qubit`](#qiskit.circuit.Qubit "qiskit.c Related to measurements, there is a [`Reset`](#qiskit.circuit.Reset "qiskit.circuit.Reset") operation, which produces no classical data but instructs hardware to return the qubit to the $\lvert0\rangle$ state. This is assumed to happen incoherently and to collapse any entanglement. - + Bases: [`SingletonInstruction`](circuit_singleton#qiskit.circuit.singleton.SingletonInstruction "qiskit.circuit.singleton.SingletonInstruction") Incoherently reset a qubit to the $\lvert0\rangle$ state. @@ -465,7 +465,7 @@ Related to measurements, there is a [`Reset`](#qiskit.circuit.Reset "qiskit.circ Hardware can be instructed to apply a real-time idle period on a given qubit. A scheduled circuit (see [`qiskit.transpiler`](transpiler#module-qiskit.transpiler "qiskit.transpiler")) will include all the idle times on qubits explicitly in terms of this [`Delay`](#qiskit.circuit.Delay "qiskit.circuit.Delay"). - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") Do nothing and just delay/wait/idle for a specified duration. @@ -489,7 +489,7 @@ qc.x(0) it is forbidden for the optimizer to cancel out the two $X$ instructions. - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") A directive for circuit compilation to separate pieces of a circuit so that any optimizations or re-writes are constrained to only act between barriers. @@ -504,7 +504,7 @@ it is forbidden for the optimizer to cancel out the two $X$ instructions. The [`Store`](#qiskit.circuit.Store "qiskit.circuit.Store") instruction is particularly special, in that it allows writing the result of a [real-time classical computation expression](#circuit-repr-real-time-classical) (an [`expr.Expr`](circuit_classical#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr")) in a local classical variable (a [`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")). It takes *neither* [`Qubit`](#qiskit.circuit.Qubit "qiskit.circuit.Qubit") nor [`Clbit`](#qiskit.circuit.Clbit "qiskit.circuit.Clbit") operands, but has an explicit [`lvalue`](#qiskit.circuit.Store.lvalue "qiskit.circuit.Store.lvalue") and [`rvalue`](#qiskit.circuit.Store.rvalue "qiskit.circuit.Store.rvalue"). - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") A manual storage of some classical value to a classical memory location. @@ -645,7 +645,7 @@ Subclasses of [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruc ### \_define - + Populate the cached `_definition` field of this [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction"). Subclasses should implement this method to provide lazy construction of their public [`definition`](qiskit.circuit.Instruction#definition "qiskit.circuit.Instruction.definition") attribute. A subclass can use its [`params`](qiskit.circuit.Instruction#params "qiskit.circuit.Instruction.params") at the time of the call. The method should populate `_definition` with a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") and not return a value. @@ -659,7 +659,7 @@ Subclasses of [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate") will also like ### array\_\_ - + Return a Numpy array representing the gate. This can use the gate’s `params` field, and may assume that these are numeric values (assuming the subclass expects that) and not [compile-time parameters](#circuit-compile-time-parameters). For greatest efficiency, the returned array should default to a dtype of [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.12)"). @@ -694,7 +694,9 @@ class RXZGate(Gate): # Also we have an efficient representation of power. return RXZGate(exponent * self.params[0]) - def __array__(self, dtype=None): + def __array__(self, dtype=None, copy=None): + if copy is False: + raise ValueError("unable to avoid copy while creating an array as requested") cos = math.cos(0.5 * self.params[0]) isin = 1j * math.sin(0.5 * self.params[0]) return np.array([ @@ -839,7 +841,7 @@ For a more backend-like simulation experience, there are simulator-backed implem * [`BasicProvider`](qiskit.providers.basic_provider.BasicProvider "qiskit.providers.basic_provider.BasicProvider") and the raw backends it can return to you. * `StatevectorSimulator` for a backend-like wrapper around [`Statevector`](qiskit.quantum_info.Statevector "qiskit.quantum_info.Statevector") -* The [`qiskit_aer`](https://qiskit.github.io/qiskit-aer/apidocs/aer_provider.html#module-qiskit_aer "(in Qiskit Aer v0.14.0)") for full, high-performance simulation capabilities. +* The [`qiskit_aer`](https://qiskit.github.io/qiskit-aer/apidocs/aer_provider.html#module-qiskit_aer "(in Qiskit Aer v0.14.1)") for full, high-performance simulation capabilities. * [`StatevectorSampler`](qiskit.primitives.StatevectorSampler "qiskit.primitives.StatevectorSampler") and [`StatevectorEstimator`](qiskit.primitives.StatevectorEstimator "qiskit.primitives.StatevectorEstimator") for simulator-backed reference implementations of the [Qiskit Primitives](primitives#qiskit-primitives). ### Defining equivalence relationships @@ -866,7 +868,7 @@ The default instance of [`EquivalenceLibrary`](qiskit.circuit.EquivalenceLibrary ### random\_circuit - + Generate random circuit of arbitrary size and form. This function will generate a random circuit by randomly selecting gates from the set of standard gates in `qiskit.circuit.library.standard_gates`. For example: @@ -909,7 +911,7 @@ Almost all circuit functions and methods will raise a [`CircuitError`](#qiskit.c ### CircuitError - + Base class for errors raised while processing a circuit. Set the error message. diff --git a/docs/api/qiskit/dev/circuit_classical.mdx b/docs/api/qiskit/dev/circuit_classical.mdx index 3570794453a..56b04cbe547 100644 --- a/docs/api/qiskit/dev/circuit_classical.mdx +++ b/docs/api/qiskit/dev/circuit_classical.mdx @@ -48,7 +48,7 @@ There are two pathways for constructing expressions. The classes that form [the The expression system is based on tree representation. All nodes in the tree are final (uninheritable) instances of the abstract base class: - + Root base class of all nodes in the expression tree. The base case should never be instantiated directly. This must not be subclassed by users; subclasses form the internal data of the representation of expressions, and it does not make sense to add more outside of Qiskit library code. @@ -60,7 +60,7 @@ These objects are mutable and should not be reused in a different location witho The base for dynamic variables is the [`Var`](#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var"), which can be either an arbitrarily typed real-time variable, or a wrapper around a [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") or [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister"). - + A classical variable. These variables take two forms: a new-style variable that owns its storage location and has an associated name; and an old-style variable that wraps a [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") or [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") instance that is owned by some containing circuit. In general, construction of variables for use in programs should use `Var.new()` or [`QuantumCircuit.add_var()`](qiskit.circuit.QuantumCircuit#add_var "qiskit.circuit.QuantumCircuit.add_var"). @@ -80,15 +80,15 @@ The base for dynamic variables is the [`Var`](#qiskit.circuit.classical.expr.Var -Similarly, literals used in comparison (such as integers) should be lifted to [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes with associated types. +Similarly, literals used in expressions (such as integers) should be lifted to [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes with associated types. - + A single scalar value. The operations traditionally associated with pre-, post- or infix operators in programming are represented by the [`Unary`](#qiskit.circuit.classical.expr.Unary "qiskit.circuit.classical.expr.Unary") and [`Binary`](#qiskit.circuit.classical.expr.Binary "qiskit.circuit.classical.expr.Binary") nodes as appropriate. These each take an operation type code, which are exposed as enumerations inside each class as [`Unary.Op`](#qiskit.circuit.classical.expr.Unary.Op "qiskit.circuit.classical.expr.Unary.Op") and [`Binary.Op`](#qiskit.circuit.classical.expr.Binary.Op "qiskit.circuit.classical.expr.Binary.Op") respectively. - + A unary expression. **Parameters** @@ -97,7 +97,7 @@ The operations traditionally associated with pre-, post- or infix operators in p * **operand** ([*Expr*](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr")) – The operand of the operation. * **type** ([*Type*](#qiskit.circuit.classical.types.Type "qiskit.circuit.classical.types.types.Type")) – The resolved type of the result. - + Enumeration of the opcodes for unary operations. The bitwise negation [`BIT_NOT`](#qiskit.circuit.classical.expr.Unary.Op.BIT_NOT "qiskit.circuit.classical.expr.Unary.Op.BIT_NOT") takes a single bit or an unsigned integer of known width, and returns a value of the same type. @@ -118,7 +118,7 @@ The operations traditionally associated with pre-, post- or infix operators in p - + A binary expression. **Parameters** @@ -128,7 +128,7 @@ The operations traditionally associated with pre-, post- or infix operators in p * **right** ([*Expr*](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr")) – The right-hand operand. * **type** ([*Type*](#qiskit.circuit.classical.types.Type "qiskit.circuit.classical.types.types.Type")) – The resolved type of the result. - + Enumeration of the opcodes for binary operations. The bitwise operations [`BIT_AND`](#qiskit.circuit.classical.expr.Binary.Op.BIT_AND "qiskit.circuit.classical.expr.Binary.Op.BIT_AND"), [`BIT_OR`](#qiskit.circuit.classical.expr.Binary.Op.BIT_OR "qiskit.circuit.classical.expr.Binary.Op.BIT_OR") and [`BIT_XOR`](#qiskit.circuit.classical.expr.Binary.Op.BIT_XOR "qiskit.circuit.classical.expr.Binary.Op.BIT_XOR") apply to two operands of the same type, which must be a single bit or an unsigned integer of fixed width. The resultant type is the same as the two input types. @@ -137,6 +137,8 @@ The operations traditionally associated with pre-, post- or infix operators in p The binary mathematical relations [`EQUAL`](#qiskit.circuit.classical.expr.Binary.Op.EQUAL "qiskit.circuit.classical.expr.Binary.Op.EQUAL"), [`NOT_EQUAL`](#qiskit.circuit.classical.expr.Binary.Op.NOT_EQUAL "qiskit.circuit.classical.expr.Binary.Op.NOT_EQUAL"), [`LESS`](#qiskit.circuit.classical.expr.Binary.Op.LESS "qiskit.circuit.classical.expr.Binary.Op.LESS"), [`LESS_EQUAL`](#qiskit.circuit.classical.expr.Binary.Op.LESS_EQUAL "qiskit.circuit.classical.expr.Binary.Op.LESS_EQUAL"), [`GREATER`](#qiskit.circuit.classical.expr.Binary.Op.GREATER "qiskit.circuit.classical.expr.Binary.Op.GREATER") and [`GREATER_EQUAL`](#qiskit.circuit.classical.expr.Binary.Op.GREATER_EQUAL "qiskit.circuit.classical.expr.Binary.Op.GREATER_EQUAL") take unsigned integers (with an implicit cast to make them the same width), and return a Boolean. + The bitshift operations [`SHIFT_LEFT`](#qiskit.circuit.classical.expr.Binary.Op.SHIFT_LEFT "qiskit.circuit.classical.expr.Binary.Op.SHIFT_LEFT") and [`SHIFT_RIGHT`](#qiskit.circuit.classical.expr.Binary.Op.SHIFT_RIGHT "qiskit.circuit.classical.expr.Binary.Op.SHIFT_RIGHT") can take bit-like container types (e.g. unsigned integers) as the left operand, and any integer type as the right-hand operand. In all cases, the output bit width is the same as the input, and zeros fill in the “exposed” spaces. + ### BIT\_AND @@ -202,14 +204,38 @@ The operations traditionally associated with pre-, post- or infix operators in p Numeric greater than or equal to. `lhs >= rhs`. + + ### SHIFT\_LEFT + + + Zero-padding bitshift to the left. `lhs << rhs`. + + + ### SHIFT\_RIGHT + + + Zero-padding bitshift to the right. `lhs >> rhs`. + +Bit-like types (unsigned integers) can be indexed by integer types, represented by [`Index`](#qiskit.circuit.classical.expr.Index "qiskit.circuit.classical.expr.Index"). The result is a single bit. The resulting expression has an associated memory location (and so can be used as an lvalue for [`Store`](circuit#qiskit.circuit.Store "qiskit.circuit.Store"), etc) if the target is also an lvalue. + + + An indexing expression. + + **Parameters** + + * **target** ([*Expr*](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr")) – The object being indexed. + * **index** ([*Expr*](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr")) – The expression doing the indexing. + * **type** ([*Type*](#qiskit.circuit.classical.types.Type "qiskit.circuit.classical.types.types.Type")) – The resolved type of the result. + + When constructing expressions, one must ensure that the types are valid for the operation. Attempts to construct expressions with invalid types will raise a regular Python `TypeError`. Expressions in this system are defined to act only on certain sets of types. However, values may be cast to a suitable supertype in order to satisfy the typing requirements. In these cases, a node in the expression tree is used to represent the promotion. In all cases where operations note that they “implicitly cast” or “coerce” their arguments, the expression tree must have this node representing the conversion. - + A cast from one type to another, implied by the use of an expression in a different context. @@ -223,7 +249,7 @@ The functions and methods described in this section are a more user-friendly way ### lift - + Lift the given Python `value` to a [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.expr.Value") or [`Var`](#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.expr.Var"). If an explicit `type` is given, the typing in the output will reflect that. @@ -263,7 +289,7 @@ You can manually specify casts in cases where the cast is allowed in explicit fo ### cast - + Create an explicit cast from the given value to the given type. **Examples** @@ -286,7 +312,7 @@ There are helper constructor functions for each of the unary operations. ### bit\_not - + Create a bitwise ‘not’ expression node from the given value, resolving any implicit casts and lifting the value into a [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") node if required. **Examples** @@ -307,7 +333,7 @@ There are helper constructor functions for each of the unary operations. ### logic\_not - + Create a logical ‘not’ expression node from the given value, resolving any implicit casts and lifting the value into a [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") node if required. **Examples** @@ -330,7 +356,7 @@ Similarly, the binary operations and relations have helper functions defined. ### bit\_and - + Create a bitwise ‘and’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -351,7 +377,7 @@ Similarly, the binary operations and relations have helper functions defined. ### bit\_or - + Create a bitwise ‘or’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -372,7 +398,7 @@ Similarly, the binary operations and relations have helper functions defined. ### bit\_xor - + Create a bitwise ‘exclusive or’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -393,7 +419,7 @@ Similarly, the binary operations and relations have helper functions defined. ### logic\_and - + Create a logical ‘and’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -414,7 +440,7 @@ Similarly, the binary operations and relations have helper functions defined. ### logic\_or - + Create a logical ‘or’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -435,7 +461,7 @@ Similarly, the binary operations and relations have helper functions defined. ### equal - + Create an ‘equal’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -456,7 +482,7 @@ Similarly, the binary operations and relations have helper functions defined. ### not\_equal - + Create a ‘not equal’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -477,7 +503,7 @@ Similarly, the binary operations and relations have helper functions defined. ### less - + Create a ‘less than’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -498,7 +524,7 @@ Similarly, the binary operations and relations have helper functions defined. ### less\_equal - + Create a ‘less than or equal to’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -519,7 +545,7 @@ Similarly, the binary operations and relations have helper functions defined. ### greater - + Create a ‘greater than’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -540,7 +566,7 @@ Similarly, the binary operations and relations have helper functions defined. ### greater\_equal - + Create a ‘greater than or equal to’ expression node from the given value, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. **Examples** @@ -559,11 +585,89 @@ Similarly, the binary operations and relations have helper functions defined. [*Expr*](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.expr.Expr") +### shift\_left + + + Create a ‘bitshift left’ expression node from the given two values, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. + + If `type` is given, the `left` operand will be coerced to it (if possible). + + **Examples** + + Shift the value of a standalone variable left by some amount: + + ```python + >>> from qiskit.circuit.classical import expr, types + >>> a = expr.Var.new("a", types.Uint(8)) + >>> expr.shift_left(a, 4) + Binary(Binary.Op.SHIFT_LEFT, Var(, Uint(8), name='a'), Value(4, Uint(3)), Uint(8)) + ``` + + Shift an integer literal by a variable amount, coercing the type of the literal: + + ```python + >>> expr.shift_left(3, a, types.Uint(16)) + Binary(Binary.Op.SHIFT_LEFT, Value(3, Uint(16)), Var(, Uint(8), name='a'), Uint(16)) + ``` + + **Return type** + + [Expr](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr") + + +### shift\_right + + + Create a ‘bitshift right’ expression node from the given values, resolving any implicit casts and lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. + + If `type` is given, the `left` operand will be coerced to it (if possible). + + **Examples** + + Shift the value of a classical register right by some amount: + + ```python + >>> from qiskit.circuit import ClassicalRegister + >>> from qiskit.circuit.classical import expr + >>> expr.shift_right(ClassicalRegister(8, "a"), 4) + Binary(Binary.Op.SHIFT_RIGHT, Var(ClassicalRegister(8, "a"), Uint(8)), Value(4, Uint(3)), Uint(8)) + ``` + + **Return type** + + [Expr](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr") + + +You can index into unsigned integers and bit-likes using another unsigned integer of any width. This includes in storing operations, if the target of the index is writeable. + +### index + + + Index into the `target` with the given integer `index`, lifting the values into [`Value`](#qiskit.circuit.classical.expr.Value "qiskit.circuit.classical.expr.Value") nodes if required. + + This can be used as the target of a [`Store`](circuit#qiskit.circuit.Store "qiskit.circuit.Store"), if the `target` is itself an lvalue. + + **Examples** + + Index into a classical register with a literal: + + ```python + >>> from qiskit.circuit import ClassicalRegister + >>> from qiskit.circuit.classical import expr + >>> expr.index(ClassicalRegister(8, "a"), 3) + Index(Var(ClassicalRegister(8, "a"), Uint(8)), Value(3, Uint(2)), Bool()) + ``` + + **Return type** + + [*Expr*](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.expr.Expr") + + Qiskit’s legacy method for specifying equality conditions for use in conditionals is to use a two-tuple of a [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") or [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") and an integer. This represents an exact equality condition, and there are no ways to specify any other relations. The helper function [`lift_legacy_condition()`](#qiskit.circuit.classical.expr.lift_legacy_condition "qiskit.circuit.classical.expr.lift_legacy_condition") converts this legacy format into the new expression syntax. ### lift\_legacy\_condition - + Lift a legacy two-tuple equality condition into a new-style [`Expr`](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr"). **Examples** @@ -590,12 +694,12 @@ Qiskit’s legacy method for specifying equality conditions for use in condition A typical consumer of the expression tree wants to recursively walk through the tree, potentially statefully, acting on each node differently depending on its type. This is naturally a double-dispatch problem; the logic of ‘what is to be done’ is likely stateful and users should be free to define their own operations, yet each node defines ‘what is being acted on’. We enable this double dispatch by providing a base visitor class for the expression tree. - + Base class for visitors to the [`Expr`](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr") tree. Subclasses should override whichever of the `visit_*` methods that they are able to handle, and should be organised such that non-existent methods will never be called. ### visit\_binary - + **Return type** *\_T\_co* @@ -603,7 +707,7 @@ A typical consumer of the expression tree wants to recursively walk through the ### visit\_cast - + **Return type** *\_T\_co* @@ -611,7 +715,15 @@ A typical consumer of the expression tree wants to recursively walk through the ### visit\_generic - + + **Return type** + + *\_T\_co* + + + ### visit\_index + + **Return type** *\_T\_co* @@ -619,7 +731,7 @@ A typical consumer of the expression tree wants to recursively walk through the ### visit\_unary - + **Return type** *\_T\_co* @@ -627,7 +739,7 @@ A typical consumer of the expression tree wants to recursively walk through the ### visit\_value - + **Return type** *\_T\_co* @@ -635,7 +747,7 @@ A typical consumer of the expression tree wants to recursively walk through the ### visit\_var - + **Return type** *\_T\_co* @@ -648,7 +760,7 @@ For the convenience of simple visitors that only need to inspect the variables i ### iter\_vars - + Get an iterator over the [`Var`](#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.expr.Var") nodes referenced at any level in the given [`Expr`](#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.expr.Expr"). **Examples** @@ -676,7 +788,7 @@ Two expressions can be compared for direct structural equality by using the buil ### structurally\_equivalent - + Do these two expressions have exactly the same tree structure, up to some key function for the [`Var`](#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.expr.Var") objects? In other words, are these two expressions the exact same trees, except we compare the [`Var.var`](#qiskit.circuit.classical.expr.Var.var "qiskit.circuit.classical.expr.Var.var") fields by calling the appropriate `*_var_key` function on them, and comparing that output for equality. This function does not allow any semantic “equivalences” such as asserting that `a == b` is equivalent to `b == a`; the evaluation order of the operands could, in general, cause such a statement to be false (consider hypothetical `extern` functions that access global state). @@ -723,7 +835,7 @@ Some expressions have associated memory locations, and others may be purely temp ### is\_lvalue - + Return whether this expression can be used in l-value positions, that is, whether it has a well-defined location in memory, such as one that might be writeable. Being an l-value is a necessary but not sufficient for this location to be writeable; it is permissible that a larger object containing this memory location may not allow writing from the scope that attempts to write to it. This would be an access property of the containing program, however, and not an inherent property of the expression system. @@ -783,7 +895,7 @@ The type system of the expression tree is exposed through this module. This is i All types inherit from an abstract base class: - + Root base class of all nodes in the type tree. The base case should never be instantiated directly. This must not be subclassed by users; subclasses form the internal data of the representation of expressions, and it does not make sense to add more outside of Qiskit library code. @@ -793,11 +905,11 @@ Types should be considered immutable objects, and you must not mutate them. It i The two different types available are for Booleans (corresponding to [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") and the literals `True` and `False`), and unsigned integers (corresponding to [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") and Python integers). - + The Boolean type. This has exactly two values: `True` and `False`. - + An unsigned integer of fixed bit width. @@ -815,7 +927,7 @@ The low-level interface to querying the subtyping relationship is the [`order()` ### order - + Get the ordering relationship between the two types as an enumeration value. **Examples** @@ -842,7 +954,7 @@ The low-level interface to querying the subtyping relationship is the [`order()` The return value is an enumeration [`Ordering`](#qiskit.circuit.classical.types.Ordering "qiskit.circuit.classical.types.Ordering") that describes what, if any, subtyping relationship exists between the two types. - + Enumeration listing the possible relations between two types. Types only have a partial ordering, so it’s possible for two types to have no sub-typing relationship. Note that the sub-/supertyping relationship is not the same as whether a type can be explicitly cast from one to another. @@ -852,7 +964,7 @@ Some helper methods are then defined in terms of this low-level [`order()`](#qis ### is\_subtype - + Does the relation $\text{left} \le \text{right}$ hold? If there is no ordering relation between the two types, then this returns `False`. If `strict`, then the equality is also forbidden. **Examples** @@ -881,7 +993,7 @@ Some helper methods are then defined in terms of this low-level [`order()`](#qis ### is\_supertype - + Does the relation $\text{left} \ge \text{right}$ hold? If there is no ordering relation between the two types, then this returns `False`. If `strict`, then the equality is also forbidden. **Examples** @@ -910,7 +1022,7 @@ Some helper methods are then defined in terms of this low-level [`order()`](#qis ### greater - + Get the greater of the two types, assuming that there is an ordering relation between them. Technically, this is a slightly restricted version of the concept of the ‘meet’ of the two types in that the return value must be one of the inputs. In practice in the type system there is no concept of a ‘sum’ type, so the ‘meet’ exists if and only if there is an ordering between the two types, and is equal to the greater of the two types. **Returns** @@ -942,7 +1054,7 @@ It is common to need to cast values of one type to another type. The casting rul ### cast\_kind - + Determine the sort of cast that is required to move from the left type to the right type. **Examples** @@ -966,7 +1078,7 @@ It is common to need to cast values of one type to another type. The casting rul The return values from this function are an enumeration explaining the types of cast that are allowed from the left type to the right type. - + A return value indicating the type of cast that can occur from one type to another. diff --git a/docs/api/qiskit/dev/circuit_library.mdx b/docs/api/qiskit/dev/circuit_library.mdx index f58c9e55ef1..35e40915a4d 100644 --- a/docs/api/qiskit/dev/circuit_library.mdx +++ b/docs/api/qiskit/dev/circuit_library.mdx @@ -176,7 +176,7 @@ print(diagonal.num_qubits) | [`PauliGate`](qiskit.circuit.library.PauliGate "qiskit.circuit.library.PauliGate")(label) | A multi-qubit Pauli gate. | | [`LinearFunction`](qiskit.circuit.library.LinearFunction "qiskit.circuit.library.LinearFunction")(linear\[, validate\_input]) | A linear reversible circuit on n qubits. | | [`Isometry`](qiskit.circuit.library.Isometry "qiskit.circuit.library.Isometry")(isometry, num\_ancillas\_zero, ...\[, ...]) | Decomposition of arbitrary isometries from $m$ to $n$ qubits. | -| [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")(data\[, label, check\_input]) | Class quantum gates specified by a unitary matrix. | +| [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")(data\[, label, check\_input, ...]) | Class quantum gates specified by a unitary matrix. | | [`UCGate`](qiskit.circuit.library.UCGate "qiskit.circuit.library.UCGate")(gate\_list\[, up\_to\_diagonal]) | Uniformly controlled gate (also called multiplexed gate). | | [`UCPauliRotGate`](qiskit.circuit.library.UCPauliRotGate "qiskit.circuit.library.UCPauliRotGate")(angle\_list, rot\_axis) | Uniformly controlled Pauli rotations. | | [`UCRXGate`](qiskit.circuit.library.UCRXGate "qiskit.circuit.library.UCRXGate")(angle\_list) | Uniformly controlled Pauli-X rotations. | @@ -326,7 +326,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_2a\_1 - + **Returns** template as a quantum circuit. @@ -338,7 +338,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_2a\_2 - + **Returns** template as a quantum circuit. @@ -350,7 +350,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_2a\_3 - + **Returns** template as a quantum circuit. @@ -362,7 +362,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_4a\_1 - + **Returns** template as a quantum circuit. @@ -374,7 +374,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_4a\_2 - + **Returns** template as a quantum circuit. @@ -386,7 +386,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_4a\_3 - + **Returns** template as a quantum circuit. @@ -398,7 +398,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_4b\_1 - + **Returns** template as a quantum circuit. @@ -410,7 +410,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_4b\_2 - + **Returns** template as a quantum circuit. @@ -422,7 +422,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_5a\_1 - + **Returns** template as a quantum circuit. @@ -434,7 +434,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_5a\_2 - + **Returns** template as a quantum circuit. @@ -446,7 +446,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_5a\_3 - + **Returns** template as a quantum circuit. @@ -458,7 +458,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_5a\_4 - + **Returns** template as a quantum circuit. @@ -470,7 +470,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6a\_1 - + **Returns** template as a quantum circuit. @@ -482,7 +482,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6a\_2 - + **Returns** template as a quantum circuit. @@ -494,7 +494,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6a\_3 - + **Returns** template as a quantum circuit. @@ -506,7 +506,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6a\_4 - + **Returns** template as a quantum circuit. @@ -518,7 +518,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6b\_1 - + **Returns** template as a quantum circuit. @@ -530,7 +530,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6b\_2 - + **Returns** template as a quantum circuit. @@ -542,7 +542,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_6c\_1 - + **Returns** template as a quantum circuit. @@ -554,7 +554,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_7a\_1 - + **Returns** template as a quantum circuit. @@ -566,7 +566,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_7b\_1 - + **Returns** template as a quantum circuit. @@ -578,7 +578,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_7c\_1 - + **Returns** template as a quantum circuit. @@ -590,7 +590,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_7d\_1 - + **Returns** template as a quantum circuit. @@ -602,7 +602,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_7e\_1 - + **Returns** template as a quantum circuit. @@ -614,7 +614,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9a\_1 - + **Returns** template as a quantum circuit. @@ -626,7 +626,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_1 - + **Returns** template as a quantum circuit. @@ -638,7 +638,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_2 - + **Returns** template as a quantum circuit. @@ -650,7 +650,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_3 - + **Returns** template as a quantum circuit. @@ -662,7 +662,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_4 - + **Returns** template as a quantum circuit. @@ -674,7 +674,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_5 - + **Returns** template as a quantum circuit. @@ -686,7 +686,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_6 - + **Returns** template as a quantum circuit. @@ -698,7 +698,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_7 - + **Returns** template as a quantum circuit. @@ -710,7 +710,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_8 - + **Returns** template as a quantum circuit. @@ -722,7 +722,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_9 - + **Returns** template as a quantum circuit. @@ -734,7 +734,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_10 - + **Returns** template as a quantum circuit. @@ -746,7 +746,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_11 - + **Returns** template as a quantum circuit. @@ -758,7 +758,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9c\_12 - + **Returns** template as a quantum circuit. @@ -770,7 +770,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_1 - + **Returns** template as a quantum circuit. @@ -782,7 +782,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_2 - + **Returns** template as a quantum circuit. @@ -794,7 +794,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_3 - + **Returns** template as a quantum circuit. @@ -806,7 +806,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_4 - + **Returns** template as a quantum circuit. @@ -818,7 +818,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_5 - + **Returns** template as a quantum circuit. @@ -830,7 +830,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_6 - + **Returns** template as a quantum circuit. @@ -842,7 +842,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_7 - + **Returns** template as a quantum circuit. @@ -854,7 +854,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_8 - + **Returns** template as a quantum circuit. @@ -866,7 +866,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_9 - + **Returns** template as a quantum circuit. @@ -878,7 +878,7 @@ Template circuits for [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.lib ### template\_nct\_9d\_10 - + **Returns** template as a quantum circuit. @@ -894,7 +894,7 @@ Template circuits over Clifford gates. ### clifford\_2\_1 - + **Returns** template as a quantum circuit. @@ -906,7 +906,7 @@ Template circuits over Clifford gates. ### clifford\_2\_2 - + **Returns** template as a quantum circuit. @@ -918,7 +918,7 @@ Template circuits over Clifford gates. ### clifford\_2\_3 - + **Returns** template as a quantum circuit. @@ -930,7 +930,7 @@ Template circuits over Clifford gates. ### clifford\_2\_4 - + **Returns** template as a quantum circuit. @@ -942,7 +942,7 @@ Template circuits over Clifford gates. ### clifford\_3\_1 - + **Returns** template as a quantum circuit. @@ -954,7 +954,7 @@ Template circuits over Clifford gates. ### clifford\_4\_1 - + **Returns** template as a quantum circuit. @@ -966,7 +966,7 @@ Template circuits over Clifford gates. ### clifford\_4\_2 - + **Returns** template as a quantum circuit. @@ -978,7 +978,7 @@ Template circuits over Clifford gates. ### clifford\_4\_3 - + **Returns** template as a quantum circuit. @@ -990,7 +990,7 @@ Template circuits over Clifford gates. ### clifford\_4\_4 - + **Returns** template as a quantum circuit. @@ -1002,7 +1002,7 @@ Template circuits over Clifford gates. ### clifford\_5\_1 - + **Returns** template as a quantum circuit. @@ -1014,7 +1014,7 @@ Template circuits over Clifford gates. ### clifford\_6\_1 - + **Returns** template as a quantum circuit. @@ -1026,7 +1026,7 @@ Template circuits over Clifford gates. ### clifford\_6\_2 - + **Returns** template as a quantum circuit. @@ -1038,7 +1038,7 @@ Template circuits over Clifford gates. ### clifford\_6\_3 - + **Returns** template as a quantum circuit. @@ -1050,7 +1050,7 @@ Template circuits over Clifford gates. ### clifford\_6\_4 - + **Returns** template as a quantum circuit. @@ -1062,7 +1062,7 @@ Template circuits over Clifford gates. ### clifford\_6\_5 - + **Returns** template as a quantum circuit. @@ -1074,7 +1074,7 @@ Template circuits over Clifford gates. ### clifford\_8\_1 - + **Returns** template as a quantum circuit. @@ -1086,7 +1086,7 @@ Template circuits over Clifford gates. ### clifford\_8\_2 - + **Returns** template as a quantum circuit. @@ -1098,7 +1098,7 @@ Template circuits over Clifford gates. ### clifford\_8\_3 - + **Returns** template as a quantum circuit. @@ -1114,37 +1114,37 @@ Template circuits with [`RZXGate`](qiskit.circuit.library.RZXGate "qiskit.circui ### rzx\_yz - + Template for CX - RYGate - CX. ### rzx\_xz - + Template for CX - RXGate - CX. ### rzx\_cy - + Template for CX - RYGate - CX. ### rzx\_zz1 - + Template for CX - RZGate - CX. ### rzx\_zz2 - + Template for CX - RZGate - CX. ### rzx\_zz3 - + Template for CX - RZGate - CX. diff --git a/docs/api/qiskit/dev/circuit_singleton.mdx b/docs/api/qiskit/dev/circuit_singleton.mdx index b92c94c481e..0dc317b37d2 100644 --- a/docs/api/qiskit/dev/circuit_singleton.mdx +++ b/docs/api/qiskit/dev/circuit_singleton.mdx @@ -44,7 +44,7 @@ assert XGate() is XGate() The public classes correspond to the standard classes [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") and [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate"), respectively, and are subclasses of these. - + A base class to use for [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") objects that by default are singleton instances. This class should be used for instruction classes that have fixed definitions and do not contain any unique state. The canonical example of something like this is [`Measure`](circuit#qiskit.circuit.Measure "qiskit.circuit.Measure") which has an immutable definition and any instance of [`Measure`](circuit#qiskit.circuit.Measure "qiskit.circuit.Measure") is the same. Using singleton instructions as a base class for these types of gate classes provides a large advantage in the memory footprint of multiple instructions. @@ -52,13 +52,13 @@ The public classes correspond to the standard classes [`Instruction`](qiskit.cir The exception to be aware of with this class though are the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") attributes [`label`](qiskit.circuit.Instruction#label "qiskit.circuit.Instruction.label"), [`condition`](qiskit.circuit.Instruction#condition "qiskit.circuit.Instruction.condition"), [`duration`](qiskit.circuit.Instruction#duration "qiskit.circuit.Instruction.duration"), and [`unit`](qiskit.circuit.Instruction#unit "qiskit.circuit.Instruction.unit") which can be set differently for specific instances of gates. For [`SingletonInstruction`](#qiskit.circuit.singleton.SingletonInstruction "qiskit.circuit.singleton.SingletonInstruction") usage to be sound setting these attributes is not available and they can only be set at creation time, or on an object that has been specifically made mutable using [`to_mutable()`](qiskit.circuit.Instruction#to_mutable "qiskit.circuit.Instruction.to_mutable"). If any of these attributes are used during creation, then instead of using a single shared global instance of the same gate a new separate instance will be created. - + A base class to use for [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate") objects that by default are singleton instances. This class is very similar to [`SingletonInstruction`](#qiskit.circuit.singleton.SingletonInstruction "qiskit.circuit.singleton.SingletonInstruction"), except implies unitary [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate") semantics as well. The same caveats around setting attributes in that class apply here as well. - + A base class to use for [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.ControlledGate") objects that by default are singleton instances This class is very similar to [`SingletonInstruction`](#qiskit.circuit.singleton.SingletonInstruction "qiskit.circuit.singleton.SingletonInstruction"), except implies unitary [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.ControlledGate") semantics as well. The same caveats around setting attributes in that class apply here as well. @@ -120,7 +120,7 @@ Subclasses of [`SingletonInstruction`](#qiskit.circuit.singleton.SingletonInstru ### \_singleton\_lookup\_key - + Given the arguments to the constructor, return a key tuple that identifies the singleton instance to retrieve, or `None` if the arguments imply that a mutable object must be created. For performance, as a special case, this method will not be called if the class constructor was given zero arguments (e.g. the construction `XGate()` will not call this method, but `XGate(label=None)` will), and the default singleton will immediately be returned. diff --git a/docs/api/qiskit/dev/compiler.mdx b/docs/api/qiskit/dev/compiler.mdx index 29d76074c7b..753bc44154d 100644 --- a/docs/api/qiskit/dev/compiler.mdx +++ b/docs/api/qiskit/dev/compiler.mdx @@ -22,7 +22,7 @@ python_api_name: qiskit.compiler ### assemble - + Assemble a list of circuits or pulse schedules into a `Qobj`. This function serializes the payloads, which could be either circuits or schedules, to create `Qobj` “experiments”. It further annotates the experiment payload with header and configurations. @@ -103,7 +103,7 @@ python_api_name: qiskit.compiler ### schedule - + Schedule a circuit to a pulse `Schedule`, using the backend, according to any specified methods. Supported methods are documented in `qiskit.scheduler.schedule_circuit`. **Parameters** @@ -130,7 +130,7 @@ python_api_name: qiskit.compiler ### transpile - + Transpile one or more circuits, according to some desired transpilation targets. Transpilation is potentially done in parallel using multiprocessing when `circuits` is a list with > 1 [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") object, depending on the local environment and configuration. @@ -290,7 +290,7 @@ python_api_name: qiskit.compiler ### sequence - + Schedule a scheduled circuit to a pulse `Schedule`, using the backend. **Parameters** diff --git a/docs/api/qiskit/dev/converters.mdx b/docs/api/qiskit/dev/converters.mdx index ad99b143836..75cf0e6fab2 100644 --- a/docs/api/qiskit/dev/converters.mdx +++ b/docs/api/qiskit/dev/converters.mdx @@ -20,7 +20,7 @@ python_api_name: qiskit.converters ### circuit\_to\_dag - + Build a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") object from a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -62,7 +62,7 @@ python_api_name: qiskit.converters ### dag\_to\_circuit - + Build a `QuantumCircuit` object from a `DAGCircuit`. **Parameters** @@ -104,7 +104,7 @@ python_api_name: qiskit.converters ### circuit\_to\_instruction - + Build an [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") object from a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). The instruction is anonymous (not tied to a named quantum register), and so can be inserted into another circuit. The instruction will have the same string name as the circuit. @@ -147,7 +147,7 @@ python_api_name: qiskit.converters ### circuit\_to\_gate - + Build a [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate") object from a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). The gate is anonymous (not tied to a named quantum register), and so can be inserted into another circuit. The gate will have the same string name as the circuit. @@ -174,7 +174,7 @@ python_api_name: qiskit.converters ### dagdependency\_to\_circuit - + Build a `QuantumCircuit` object from a `DAGDependency`. **Parameters** @@ -192,7 +192,7 @@ python_api_name: qiskit.converters ### circuit\_to\_dagdependency - + Build a `DAGDependency` object from a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -211,7 +211,7 @@ python_api_name: qiskit.converters ### dag\_to\_dagdependency - + Build a `DAGDependency` object from a `DAGCircuit`. **Parameters** @@ -230,7 +230,7 @@ python_api_name: qiskit.converters ### dagdependency\_to\_dag - + Build a `DAGCircuit` object from a `DAGDependency`. **Parameters** diff --git a/docs/api/qiskit/dev/dagcircuit.mdx b/docs/api/qiskit/dev/dagcircuit.mdx index 3f6f0e1dec7..63cafb3d60b 100644 --- a/docs/api/qiskit/dev/dagcircuit.mdx +++ b/docs/api/qiskit/dev/dagcircuit.mdx @@ -34,7 +34,7 @@ python_api_name: qiskit.dagcircuit ### DAGCircuitError - + Base class for errors raised by the DAGCircuit object. Set the error message. @@ -42,7 +42,7 @@ python_api_name: qiskit.dagcircuit ### DAGDependencyError - + Base class for errors raised by the DAGDependency object. Set the error message. diff --git a/docs/api/qiskit/dev/exceptions.mdx b/docs/api/qiskit/dev/exceptions.mdx index ac695aa4b26..5fde4290ca6 100644 --- a/docs/api/qiskit/dev/exceptions.mdx +++ b/docs/api/qiskit/dev/exceptions.mdx @@ -24,7 +24,7 @@ All Qiskit-related exceptions raised by Qiskit are subclasses of the base: ### QiskitError - + Base class for errors raised by Qiskit. Set the error message. @@ -40,7 +40,7 @@ Qiskit has several optional features that depend on other packages that are not ### MissingOptionalLibraryError - + Raised when an optional library is missing. Set the error message. :param libname: Name of missing library :param name: Name of class, function, module that uses this library :param pip\_install: pip install command, if any :param msg: Descriptive message, if any @@ -50,7 +50,7 @@ Two more uncommon errors relate to failures in reading user-configuration files, ### QiskitUserConfigError - + Raised when an error is encountered reading a user config file. Set the error message. @@ -58,7 +58,7 @@ Two more uncommon errors relate to failures in reading user-configuration files, ### InvalidFileError - + Raised when the file provided is not valid for the specific task. Set the error message. @@ -70,7 +70,7 @@ Some particular features of Qiskit may raise custom warnings. In general, Qiskit ### QiskitWarning - + Common subclass of warnings for Qiskit-specific warnings being raised. @@ -78,7 +78,7 @@ Related to [`MissingOptionalLibraryError`](#qiskit.exceptions.MissingOptionalLib ### OptionalDependencyImportWarning - + Raised when an optional library raises errors during its import. @@ -90,7 +90,7 @@ When experimental features are being used, Qiskit will raise [`ExperimentalWarni ### ExperimentalWarning - + Raised when an experimental feature is being used. diff --git a/docs/api/qiskit/dev/index.mdx b/docs/api/qiskit/dev/index.mdx index a9e575c88c3..673a3f67032 100644 --- a/docs/api/qiskit/dev/index.mdx +++ b/docs/api/qiskit/dev/index.mdx @@ -22,7 +22,7 @@ python_api_name: qiskit * [DAG Circuits (`qiskit.dagcircuit`)](dagcircuit) * [Passmanager (`qiskit.passmanager`)](passmanager) * [Providers Interface (`qiskit.providers`)](providers) -* [Writing a New Provider](providers#writing-a-new-provider) +* [Writing a New Backend](providers#writing-a-new-backend) * [Migrating between Backend API Versions](providers#migrating-between-backend-api-versions) * [BasicProvider: Python-based Simulators (`qiskit.providers.basic_provider`)](providers_basic_provider) * [Fake Provider (`qiskit.providers.fake_provider`)](providers_fake_provider) diff --git a/docs/api/qiskit/dev/passmanager.mdx b/docs/api/qiskit/dev/passmanager.mdx index 95f8daf2bfa..baaee139417 100644 --- a/docs/api/qiskit/dev/passmanager.mdx +++ b/docs/api/qiskit/dev/passmanager.mdx @@ -162,7 +162,7 @@ With the pass manager framework, a developer can flexibly customize the optimiza ### PassManagerError - + Pass manager error. Set the error message. diff --git a/docs/api/qiskit/dev/primitives.mdx b/docs/api/qiskit/dev/primitives.mdx index 7bb97659146..9a0e9f116c9 100644 --- a/docs/api/qiskit/dev/primitives.mdx +++ b/docs/api/qiskit/dev/primitives.mdx @@ -63,17 +63,17 @@ theta3 = [1, 2, 3, 4, 5, 6] estimator = Estimator() # calculate [ ] -job = estimator.run([(psi1, hamiltonian1, [theta1])]) +job = estimator.run([(psi1, H1, [theta1])]) job_result = job.result() # It will block until the job finishes. -print(f"The primitive-job finished with result {job_result}")) +print(f"The primitive-job finished with result {job_result}") # calculate [ [, # ], # [] ] job2 = estimator.run( [ - (psi1, [hamiltonian1, hamiltonian3], [theta1, theta3]), - (psi2, hamiltonian2, theta2) + (psi1, [H1, H3], [theta1, theta3]), + (psi2, H2, theta2) ], precision=0.01 ) @@ -325,7 +325,7 @@ The formal distinction between the Primitives V1 and V2 APIs are the base classe | | | | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | [`BitArray`](qiskit.primitives.BitArray "qiskit.primitives.BitArray")(array, num\_bits) | Stores an array of bit values. | -| [`DataBin`](qiskit.primitives.DataBin "qiskit.primitives.DataBin")() | Base class for data bin containers. | +| [`DataBin`](qiskit.primitives.DataBin "qiskit.primitives.DataBin")(\*\[, shape]) | Namespace for storing data. | | [`PrimitiveResult`](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")(pub\_results\[, metadata]) | A container for multiple pub results and global metadata. | | [`PubResult`](qiskit.primitives.PubResult "qiskit.primitives.PubResult")(data\[, metadata]) | Result of Primitive Unified Bloc. | | [`BasePrimitiveJob`](qiskit.primitives.BasePrimitiveJob "qiskit.primitives.BasePrimitiveJob")(job\_id, \*\*kwargs) | Primitive job abstract base class. | diff --git a/docs/api/qiskit/dev/providers.mdx b/docs/api/qiskit/dev/providers.mdx index 8947078c15c..93295b9a3ca 100644 --- a/docs/api/qiskit/dev/providers.mdx +++ b/docs/api/qiskit/dev/providers.mdx @@ -18,7 +18,7 @@ python_api_name: qiskit.providers `qiskit.providers` -This module contains the classes used to build external providers for Terra. A provider is anything that provides an external service to Terra. The typical example of this is a Backend provider which provides [`Backend`](qiskit.providers.Backend "qiskit.providers.Backend") objects which can be used for executing [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") and/or [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") objects. This module contains the abstract classes which are used to define the interface between a provider and terra. +This module contains the classes used to build external providers for Qiskit. A provider is anything that provides an external service to Qiskit. The typical example of this is a Backend provider which provides [`Backend`](qiskit.providers.Backend "qiskit.providers.Backend") objects which can be used for executing [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") and/or [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") objects. This module contains the abstract classes which are used to define the interface between a provider and Qiskit. ## Version Support @@ -26,13 +26,13 @@ Each providers interface abstract class is individually versioned. When we need ### Version Changes -Each minor version release of qiskit-terra **may** increment the version of any providers interface a single version number. It will be an aggregate of all the interface changes for that release on that interface. +Each minor version release of `qiskit` **may** increment the version of any backend interface a single version number. It will be an aggregate of all the interface changes for that release on that interface. ### Version Support Policy -To enable providers to have time to adjust to changes in this interface Terra will support multiple versions of each class at once. Given the nature of one version per release the version deprecation policy is a bit more conservative than the standard deprecation policy. Terra will support a provider interface version for a minimum of 3 minor releases or the first release after 6 months from the release that introduced a version, whichever is longer, prior to a potential deprecation. After that the standard deprecation policy will apply to that interface version. This will give providers and users sufficient time to adapt to potential breaking changes in the interface. So for example lets say in 0.19.0 `BackendV2` is introduced and in the 3 months after the release of 0.19.0 we release 0.20.0, 0.21.0, and 0.22.0, then 7 months after 0.19.0 we release 0.23.0. In 0.23.0 we can deprecate BackendV2, and it needs to still be supported and can’t be removed until the deprecation policy completes. +To enable providers to have time to adjust to changes in this interface Qiskit will support multiple versions of each class at once. Given the nature of one version per release the version deprecation policy is a bit more conservative than the standard deprecation policy. Qiskit will support a provider interface version for a minimum of 3 minor releases or the first release after 6 months from the release that introduced a version, whichever is longer, prior to a potential deprecation. After that the standard deprecation policy will apply to that interface version. This will give providers and users sufficient time to adapt to potential breaking changes in the interface. So for example lets say in 0.19.0 `BackendV2` is introduced and in the 3 months after the release of 0.19.0 we release 0.20.0, 0.21.0, and 0.22.0, then 7 months after 0.19.0 we release 0.23.0. In 0.23.0 we can deprecate BackendV2, and it needs to still be supported and can’t be removed until the deprecation policy completes. -It’s worth pointing out that Terra’s version support policy doesn’t mean providers themselves will have the same support story, they can (and arguably should) update to newer versions as soon as they can, the support window is just for Terra’s supported versions. Part of this lengthy window prior to deprecation is to give providers enough time to do their own deprecation of a potential end user impacting change in a user facing part of the interface prior to bumping their version. For example, let’s say we changed the signature to `Backend.run()` in `BackendV34` in a backwards incompatible way. Before Aer could update its [`AerSimulator`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html#qiskit_aer.AerSimulator "(in Qiskit Aer v0.14.0)") class to be based on version 34 they’d need to deprecate the old signature prior to switching over. The changeover for Aer is not guaranteed to be lockstep with Terra so we need to ensure there is a sufficient amount of time for Aer to complete its deprecation cycle prior to removing version 33 (ie making version 34 mandatory/the minimum version). +It’s worth pointing out that Qiskit’s version support policy doesn’t mean providers themselves will have the same support story, they can (and arguably should) update to newer versions as soon as they can, the support window is just for Qiskit’s supported versions. Part of this lengthy window prior to deprecation is to give providers enough time to do their own deprecation of a potential end user impacting change in a user facing part of the interface prior to bumping their version. For example, let’s say we changed the signature to `Backend.run()` in `BackendV34` in a backwards incompatible way. Before Aer could update its [`AerSimulator`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html#qiskit_aer.AerSimulator "(in Qiskit Aer v0.14.1)") class to be based on version 34 they’d need to deprecate the old signature prior to switching over. The changeover for Aer is not guaranteed to be lockstep with Qiskit, so we need to ensure there is a sufficient amount of time for Aer to complete its deprecation cycle prior to removing version 33 (ie making version 34 mandatory/the minimum version). ## Abstract Classes @@ -77,7 +77,7 @@ It’s worth pointing out that Terra’s version support policy doesn’t mean p ### QiskitBackendNotFoundError - + Base class for errors raised while looking for a backend. Set the error message. @@ -85,7 +85,7 @@ It’s worth pointing out that Terra’s version support policy doesn’t mean p ### BackendPropertyError - + Base class for errors raised while looking for a backend property. Set the error message. @@ -93,7 +93,7 @@ It’s worth pointing out that Terra’s version support policy doesn’t mean p ### JobError - + Base class for errors raised by Jobs. Set the error message. @@ -101,7 +101,7 @@ It’s worth pointing out that Terra’s version support policy doesn’t mean p ### JobTimeoutError - + Base class for timeout errors raised by jobs. Set the error message. @@ -109,17 +109,17 @@ It’s worth pointing out that Terra’s version support policy doesn’t mean p ### BackendConfigurationError - + Base class for errors raised by the BackendConfiguration. Set the error message. -# Writing a New Provider +# Writing a New Backend -If you have a quantum device or simulator that you would like to integrate with Qiskit you will need to write a provider. A provider will provide Terra with a method to get available [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") objects. The [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") object provides both information describing a backend and its operation for the [`transpiler`](transpiler#module-qiskit.transpiler "qiskit.transpiler") so that circuits can be compiled to something that is optimized and can execute on the backend. It also provides the [`run()`](qiskit.providers.BackendV2#run "qiskit.providers.BackendV2.run") method which can run the [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") objects and/or [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") objects. This enables users and other Qiskit APIs to get results from executing circuits on devices in a standard fashion regardless of how the backend is implemented. At a high level the basic steps for writing a provider are: +If you have a quantum device or simulator that you would like to integrate with Qiskit you will need to write a backend. A provider is a collection of backends and will provide Qiskit with a method to get available [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") objects. The [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") object provides both information describing a backend and its operation for the [`transpiler`](transpiler#module-qiskit.transpiler "qiskit.transpiler") so that circuits can be compiled to something that is optimized and can execute on the backend. It also provides the [`run()`](qiskit.providers.BackendV2#run "qiskit.providers.BackendV2.run") method which can run the [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") objects and/or [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") objects. This enables users and other Qiskit APIs to get results from executing circuits on devices in a standard fashion regardless of how the backend is implemented. At a high level the basic steps for writing a provider are: -> * Implement a [`ProviderV1`](qiskit.providers.ProviderV1 "qiskit.providers.ProviderV1") subclass that handles access to the backend(s). +> * Implement a `Provider` class that handles access to the backend(s). > > * Implement a [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") subclass and its [`run()`](qiskit.providers.BackendV2#run "qiskit.providers.BackendV2.run") method. > @@ -136,12 +136,11 @@ For a simple example of a provider, see the [qiskit-aqt-provider](https://github A provider class serves a single purpose: to get backend objects that enable executing circuits on a device or simulator. The expectation is that any required credentials and/or authentication will be handled in the initialization of a provider object. The provider object will then provide a list of backends, and methods to filter and acquire backends (using the provided credentials if required). An example provider class looks like: ```python -from qiskit.providers import ProviderV1 as Provider from qiskit.providers.providerutils import filter_backends from .backend import MyBackend -class MyProvider(Provider): +class MyProvider: def __init__(self, token=None): super().__init__() diff --git a/docs/api/qiskit/dev/providers_fake_provider.mdx b/docs/api/qiskit/dev/providers_fake_provider.mdx index be361f9924a..5f23de277c8 100644 --- a/docs/api/qiskit/dev/providers_fake_provider.mdx +++ b/docs/api/qiskit/dev/providers_fake_provider.mdx @@ -81,7 +81,7 @@ plot_histogram(counts) The V1 fake backends are based on a set of base classes: - + This is a dummy backend just for testing purposes. FakeBackend initializer. @@ -92,7 +92,7 @@ The V1 fake backends are based on a set of base classes: * **time\_alive** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – time to wait before returning result - + A fake OpenQASM backend. FakeBackend initializer. @@ -103,7 +103,7 @@ The V1 fake backends are based on a set of base classes: * **time\_alive** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – time to wait before returning result - + A fake pulse backend. FakeBackend initializer. diff --git a/docs/api/qiskit/dev/pulse.mdx b/docs/api/qiskit/dev/pulse.mdx index 944eef8af46..d98defcde20 100644 --- a/docs/api/qiskit/dev/pulse.mdx +++ b/docs/api/qiskit/dev/pulse.mdx @@ -70,7 +70,7 @@ An instruction can be added to a [`Schedule`](qiskit.pulse.Schedule "qiskit.puls These are all instances of the same base class: - + The smallest schedulable unit: a single instruction. It has a fixed duration and specified channels. Instruction initializer. @@ -161,7 +161,7 @@ Novel channel types can often utilize the [`ControlChannel`](qiskit.pulse.channe All channels are children of the same abstract base class: - + Base class of channels. Channels provide a Qiskit-side label for typical quantum control hardware signal channels. The final label -> physical channel mapping is the responsibility of the hardware backend. For instance, `DriveChannel(0)` holds instructions which the backend should map to the signal line driving gate operations on the qubit labeled (indexed) 0. When serialized channels are identified by their serialized name ``. The type of the channel is interpreted from the prefix, and the index often (but not always) maps to the qubit index. All concrete channel classes must have a `prefix` class attribute (and instances of that class have an index attribute). Base classes which have `prefix` set to `None` are prevented from being instantiated. @@ -214,7 +214,7 @@ The alignment transforms define alignment policies of instructions in [`Schedule These are all subtypes of the abstract base class [`AlignmentKind`](#qiskit.pulse.transforms.AlignmentKind "qiskit.pulse.transforms.AlignmentKind"). - + An abstract class for schedule alignment. Create new context. @@ -228,7 +228,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### add\_implicit\_acquires - + Return a new schedule with implicit acquires from the measurement mapping replaced by explicit ones. @@ -251,7 +251,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### align\_measures - + Return new schedules where measurements occur at the same physical time. This transformation will align the first [`Acquire`](qiskit.pulse.instructions.Acquire "qiskit.pulse.instructions.Acquire") on every channel to occur at the same time. @@ -318,7 +318,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### block\_to\_schedule - + Convert `ScheduleBlock` to `Schedule`. **Parameters** @@ -345,7 +345,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### compress\_pulses - + Optimization pass to replace identical pulses. **Parameters** @@ -363,7 +363,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### flatten - + Flatten (inline) any called nodes into a Schedule tree with no nested children. **Parameters** @@ -385,7 +385,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### inline\_subroutines - + Recursively remove call instructions and inline the respective subroutine instructions. Assigned parameter values, which are stored in the parameter table, are also applied. The subroutine is copied before the parameter assignment to avoid mutation problem. @@ -409,7 +409,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### pad - + Pad the input Schedule with `Delay``s on all unoccupied timeslots until ``schedule.duration` or `until` if not `None`. **Parameters** @@ -435,7 +435,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### remove\_directives - + Remove directives. **Parameters** @@ -453,7 +453,7 @@ The canonicalization transforms convert schedules to a form amenable for executi ### remove\_trivial\_barriers - + Remove trivial barriers with 0 or 1 channels. **Parameters** @@ -477,7 +477,7 @@ The DAG transforms create DAG representation of input program. This can be used ### block\_to\_dag - + Convert schedule block instruction into DAG. `ScheduleBlock` can be represented as a DAG as needed. For example, equality of two programs are efficiently checked on DAG representation. @@ -535,7 +535,7 @@ A sequence of transformations to generate a target code. ### target\_qobj\_transform - + A basic pulse program transformation for OpenPulse API execution. **Parameters** @@ -752,7 +752,7 @@ The above is just a small taste of what is possible with the builder. See the re ### build - + Create a context manager for launching the imperative pulse builder DSL. To enter a building context and starting building a pulse program: @@ -812,7 +812,7 @@ DriveChannel(0) ### acquire\_channel - + Return `AcquireChannel` for `qubit` on the active builder backend. Examples: @@ -838,7 +838,7 @@ DriveChannel(0) ### control\_channels - + Return `ControlChannel` for `qubit` on the active builder backend. Return the secondary drive channel for the given qubit – typically utilized for controlling multi-qubit interactions. @@ -873,7 +873,7 @@ DriveChannel(0) ### drive\_channel - + Return `DriveChannel` for `qubit` on the active builder backend. Examples: @@ -899,7 +899,7 @@ DriveChannel(0) ### measure\_channel - + Return `MeasureChannel` for `qubit` on the active builder backend. Examples: @@ -958,7 +958,7 @@ drive_sched.draw() ### acquire - + Acquire for a `duration` on a `channel` and store the result in a `register`. Examples: @@ -995,7 +995,7 @@ drive_sched.draw() ### barrier - + Barrier directive for a set of channels and qubits. This directive prevents the compiler from moving instructions across the barrier. Consider the case where we want to enforce that one pulse happens after another on separate channels, this can be done with: @@ -1062,7 +1062,7 @@ drive_sched.draw() ### call - + Call the subroutine within the currently active builder context with arbitrary parameters which will be assigned to the target program. @@ -1231,7 +1231,7 @@ drive_sched.draw() ### delay - + Delay on a `channel` for a `duration`. Examples: @@ -1254,7 +1254,7 @@ drive_sched.draw() ### play - + Play a `pulse` on a `channel`. Examples: @@ -1277,7 +1277,7 @@ drive_sched.draw() ### reference - + Refer to undefined subroutine by string keys. A [`Reference`](qiskit.pulse.instructions.Reference "qiskit.pulse.instructions.Reference") instruction is implicitly created and a schedule can be separately registered to the reference at a later stage. @@ -1302,7 +1302,7 @@ drive_sched.draw() ### set\_frequency - + Set the `frequency` of a pulse `channel`. Examples: @@ -1325,7 +1325,7 @@ drive_sched.draw() ### set\_phase - + Set the `phase` of a pulse `channel`. Examples: @@ -1350,7 +1350,7 @@ drive_sched.draw() ### shift\_frequency - + Shift the `frequency` of a pulse `channel`. Examples: @@ -1373,7 +1373,7 @@ drive_sched.draw() ### shift\_phase - + Shift the `phase` of a pulse `channel`. Examples: @@ -1398,7 +1398,7 @@ drive_sched.draw() ### snapshot - + Simulator snapshot. Examples: @@ -1741,7 +1741,7 @@ MemorySlot(0) ### measure - + Measure a qubit within the currently active builder context. At the pulse level a measurement is composed of both a stimulus pulse and an acquisition instruction which tells the systems measurement unit to acquire data and process it. We provide this measurement macro to automate the process for you, but if desired full control is still available with [`acquire()`](#qiskit.pulse.builder.acquire "qiskit.pulse.builder.acquire") and [`play()`](#qiskit.pulse.builder.play "qiskit.pulse.builder.play"). @@ -1796,7 +1796,7 @@ MemorySlot(0) ### measure\_all - + Measure all qubits within the currently active builder context. A simple macro function to measure all of the qubits in the device at the same time. This is useful for handling device `meas_map` and single measurement constraints. @@ -1829,7 +1829,7 @@ MemorySlot(0) ### delay\_qubits - + Insert delays on all the `channels.Channel`s that correspond to the input `qubits` at the same time. Examples: @@ -1886,7 +1886,7 @@ There are 1e-06 seconds in 4500 samples. ### active\_backend - + Get the backend of the currently active builder context. **Returns** @@ -1906,7 +1906,7 @@ There are 1e-06 seconds in 4500 samples. ### num\_qubits - + Return number of qubits in the currently active backend. Examples: @@ -1936,7 +1936,7 @@ There are 1e-06 seconds in 4500 samples. ### qubit\_channels - + Returns the set of channels associated with a qubit. Examples: @@ -1970,7 +1970,7 @@ There are 1e-06 seconds in 4500 samples. ### samples\_to\_seconds - + Obtain the time in seconds that will elapse for the input number of samples on the active backend. **Parameters** @@ -1988,7 +1988,7 @@ There are 1e-06 seconds in 4500 samples. ### seconds\_to\_samples - + Obtain the number of samples that will elapse in `seconds` on the active backend. Rounds down. @@ -2016,7 +2016,7 @@ There are 1e-06 seconds in 4500 samples. ### PulseError - + Errors raised by the pulse module. Set the error message. @@ -2024,7 +2024,7 @@ There are 1e-06 seconds in 4500 samples. ### BackendNotSet - + Raised if the builder context does not have a backend. Set the error message. @@ -2032,7 +2032,7 @@ There are 1e-06 seconds in 4500 samples. ### NoActiveBuilder - + Raised if no builder context is active. Set the error message. @@ -2040,7 +2040,7 @@ There are 1e-06 seconds in 4500 samples. ### UnassignedDurationError - + Raised if instruction duration is unassigned. Set the error message. @@ -2048,7 +2048,7 @@ There are 1e-06 seconds in 4500 samples. ### UnassignedReferenceError - + Raised if subroutine is unassigned. Set the error message. diff --git a/docs/api/qiskit/dev/qasm2.mdx b/docs/api/qiskit/dev/qasm2.mdx index 666cb3cb1b8..dd77a5bb609 100644 --- a/docs/api/qiskit/dev/qasm2.mdx +++ b/docs/api/qiskit/dev/qasm2.mdx @@ -32,7 +32,7 @@ This module contains two public functions, both of which create a [`QuantumCircu ### load - + Parse an OpenQASM 2 program from a file into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). The given path should be ASCII or UTF-8 encoded, and contain the OpenQASM 2 program. **Parameters** @@ -55,7 +55,7 @@ This module contains two public functions, both of which create a [`QuantumCircu ### loads - + Parse an OpenQASM 2 program from a string into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -83,7 +83,7 @@ Both of these loading functions also take an argument `include_path`, which is a You can extend the quantum components of the OpenQASM 2 language by passing an iterable of information on custom instructions as the argument `custom_instructions`. In files that have compatible definitions for these instructions, the given `constructor` will be used in place of whatever other handling [`qiskit.qasm2`](#module-qiskit.qasm2 "qiskit.qasm2") would have done. These instructions may optionally be marked as `builtin`, which causes them to not require an `opaque` or `gate` declaration, but they will silently ignore a compatible declaration. Either way, it is an error to provide a custom instruction that has a different number of parameters or qubits as a defined instruction in a parsed program. Each element of the argument iterable should be a particular data class: - + Information about a custom instruction that should be defined during the parse. The `name`, `num_params` and `num_qubits` fields are self-explanatory. The `constructor` field should be a callable object with signature `*args -> Instruction`, where each of the `num_params` `args` is a floating-point value. Most of the built-in Qiskit gate classes have this form. @@ -119,7 +119,7 @@ Similar to other serialisation modules in Python, this module offers two public ### dump - + Dump a circuit as an OpenQASM 2 program to a file or stream. **Parameters** @@ -134,7 +134,7 @@ Similar to other serialisation modules in Python, this module offers two public ### dumps - + Export a circuit to an OpenQASM 2 program in a string. **Parameters** @@ -160,7 +160,7 @@ This module defines a generic error type that derives from [`QiskitError`](excep ### QASM2Error - + A general error raised by the OpenQASM 2 interoperation layer. Set the error message. @@ -170,7 +170,7 @@ In cases where the lexer or parser fails due to an invalid OpenQASM 2 file, the ### QASM2ParseError - + An error raised because of a failure to parse an OpenQASM 2 file. Set the error message. @@ -180,7 +180,7 @@ When the exporters fail to export a circuit, likely because it has structure tha ### QASM2ExportError - + An error raised because of a failure to convert a Qiskit object to an OpenQASM 2 form. Set the error message. diff --git a/docs/api/qiskit/dev/qasm3.mdx b/docs/api/qiskit/dev/qasm3.mdx index f8c44c6d556..1f0dda11bb1 100644 --- a/docs/api/qiskit/dev/qasm3.mdx +++ b/docs/api/qiskit/dev/qasm3.mdx @@ -26,7 +26,7 @@ The high-level functions are simply [`dump()`](#qiskit.qasm3.dump "qiskit.qasm3. ### dump - + Serialize a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") object as an OpenQASM 3 stream to file-like object. **Parameters** @@ -38,7 +38,7 @@ The high-level functions are simply [`dump()`](#qiskit.qasm3.dump "qiskit.qasm3. ### dumps - + Serialize a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") object in an OpenQASM 3 string. **Parameters** @@ -57,7 +57,7 @@ The high-level functions are simply [`dump()`](#qiskit.qasm3.dump "qiskit.qasm3. Both of these exporter functions are single-use wrappers around the main [`Exporter`](#qiskit.qasm3.Exporter "qiskit.qasm3.Exporter") class. For more complex exporting needs, including dumping multiple circuits in a single session, it may be more convenient or faster to use the complete interface. - + QASM3 exporter main class. **Parameters** @@ -90,13 +90,13 @@ Both of these exporter functions are single-use wrappers around the main [`Expor ### dump - + Convert the circuit to OpenQASM 3, dumping the result to a file or text stream. ### dumps - + Convert the circuit to OpenQASM 3, returning the result as a string. @@ -105,7 +105,7 @@ All of these interfaces will raise [`QASM3ExporterError`](#qiskit.qasm3.QASM3Exp ### QASM3ExporterError - + An error raised during running the OpenQASM 3 exporter. Set the error message. @@ -115,7 +115,7 @@ All of these interfaces will raise [`QASM3ExporterError`](#qiskit.qasm3.QASM3Exp The OpenQASM 3 language is still evolving as hardware capabilities improve, so there is no final syntax that Qiskit can reliably target. In order to represent the evolving language, we will sometimes release features before formal standardization, which may need to change as the review process in the OpenQASM 3 design committees progresses. By default, the exporters will only support standardised features of the language. To enable these early-release features, use the `experimental` keyword argument of [`dump()`](#qiskit.qasm3.dump "qiskit.qasm3.dump") and [`dumps()`](#qiskit.qasm3.dumps "qiskit.qasm3.dumps"). The available feature flags are: - + Flags for experimental features that the OpenQASM 3 exporter supports. These are experimental and are more liable to change, because the OpenQASM 3 specification has not formally accepted them yet, so the syntax may not be finalized. @@ -209,7 +209,7 @@ Currently only two high-level functions are offered, as Qiskit support for impor ### load - + Load an OpenQASM 3 program from the file `filename`. **Parameters** @@ -231,7 +231,7 @@ Currently only two high-level functions are offered, as Qiskit support for impor ### loads - + Load an OpenQASM 3 program from the given string. **Parameters** @@ -255,7 +255,7 @@ Both of these two functions raise [`QASM3ImporterError`](#qiskit.qasm3.QASM3Impo ### QASM3ImporterError - + An error raised during the OpenQASM 3 importer. Set the error message. @@ -322,7 +322,7 @@ You can use the experimental interface immediately, with similar functions to th ### load\_experimental - + Load an OpenQASM 3 program from a source file into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). @@ -350,7 +350,7 @@ You can use the experimental interface immediately, with similar functions to th ### loads\_experimental - + Load an OpenQASM 3 program from a string into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). diff --git a/docs/api/qiskit/dev/qiskit.assembler.RunConfig.mdx b/docs/api/qiskit/dev/qiskit.assembler.RunConfig.mdx index 717395733e9..e377222f52e 100644 --- a/docs/api/qiskit/dev/qiskit.assembler.RunConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.assembler.RunConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.assembler.RunConfig # RunConfig - + Bases: [`SimpleNamespace`](https://docs.python.org/3/library/types.html#types.SimpleNamespace "(in Python v3.12)") Class for Run Configuration. @@ -67,7 +67,7 @@ python_api_name: qiskit.assembler.RunConfig ### from\_dict - + Create a new RunConfig object from a dictionary. **Parameters** @@ -85,7 +85,7 @@ python_api_name: qiskit.assembler.RunConfig ### to\_dict - + Return a dictionary format representation of the RunConfig **Returns** diff --git a/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx b/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx index 74773a164c7..d2f73878431 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.AnnotatedOperation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.AnnotatedOperation # AnnotatedOperation - + Bases: [`Operation`](qiskit.circuit.Operation "qiskit.circuit.operation.Operation") Annotated operation. @@ -73,7 +73,7 @@ python_api_name: qiskit.circuit.AnnotatedOperation ### control - + Return the controlled version of itself. Implemented as an annotated operation, see [`AnnotatedOperation`](#qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation"). @@ -96,7 +96,7 @@ python_api_name: qiskit.circuit.AnnotatedOperation ### copy - + Return a copy of the [`AnnotatedOperation`](#qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation"). **Return type** @@ -106,7 +106,7 @@ python_api_name: qiskit.circuit.AnnotatedOperation ### inverse - + Return the inverse version of itself. Implemented as an annotated operation, see [`AnnotatedOperation`](#qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation"). @@ -120,9 +120,26 @@ python_api_name: qiskit.circuit.AnnotatedOperation Inverse version of the given operation. + ### power + + + Raise this gate to the power of `exponent`. + + Implemented as an annotated operation, see [`AnnotatedOperation`](#qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation"). + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – ignored (used for consistency with other power methods) + + **Returns** + + An operation implementing `gate^exponent` + + ### to\_matrix - + Return a matrix representation (allowing to construct Operator). diff --git a/docs/api/qiskit/dev/qiskit.circuit.BreakLoopOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.BreakLoopOp.mdx index e3ac6f9010e..18ca72d9176 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.BreakLoopOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.BreakLoopOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.BreakLoopOp # BreakLoopOp - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") A circuit operation which, when encountered, jumps to the end of the nearest enclosing loop. Can only be used inside loops. @@ -120,19 +120,19 @@ python_api_name: qiskit.circuit.BreakLoopOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -151,7 +151,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -161,7 +161,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### copy - + Copy of the instruction. **Parameters** @@ -179,7 +179,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -203,13 +203,13 @@ python_api_name: qiskit.circuit.BreakLoopOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -233,7 +233,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -251,7 +251,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -269,7 +269,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -277,7 +277,7 @@ python_api_name: qiskit.circuit.BreakLoopOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ContinueLoopOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.ContinueLoopOp.mdx index cc5c9d86284..08ce2e68244 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ContinueLoopOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ContinueLoopOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp # ContinueLoopOp - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") A circuit operation which, when encountered, moves to the next iteration of the nearest enclosing loop. Can only be used inside loops. @@ -120,19 +120,19 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -151,7 +151,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -161,7 +161,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### copy - + Copy of the instruction. **Parameters** @@ -179,7 +179,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -203,13 +203,13 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -233,7 +233,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -251,7 +251,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -269,7 +269,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -277,7 +277,7 @@ python_api_name: qiskit.circuit.ContinueLoopOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ControlFlowOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.ControlFlowOp.mdx index 601a0f8d0e8..5d48c114e74 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ControlFlowOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ControlFlowOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.ControlFlowOp # ControlFlowOp - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Abstract class to encapsulate all control flow operations. @@ -139,19 +139,19 @@ python_api_name: qiskit.circuit.ControlFlowOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -170,7 +170,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -180,7 +180,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### copy - + Copy of the instruction. **Parameters** @@ -198,7 +198,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -222,13 +222,23 @@ python_api_name: qiskit.circuit.ControlFlowOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). + ### iter\_captured\_vars + + + Get an iterator over the unique captured variables in all blocks of this construct. + + **Return type** + + [*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.12)")\[[expr.Var](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")] + + ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -252,7 +262,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### replace\_blocks - + Return a new version of this control-flow operations with the [`blocks`](#qiskit.circuit.ControlFlowOp.blocks "qiskit.circuit.ControlFlowOp.blocks") mapped to the given new ones. Typically this is used in a workflow such as: @@ -287,7 +297,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -305,7 +315,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -323,7 +333,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -331,7 +341,7 @@ python_api_name: qiskit.circuit.ControlFlowOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ControlledGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.ControlledGate.mdx index c66bf8522ed..645a3f1268b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ControlledGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ControlledGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.ControlledGate # ControlledGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Controlled unitary gate. @@ -203,19 +203,19 @@ python_api_name: qiskit.circuit.ControlledGate ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation and handling of the arguments and its relationship. For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example: @@ -268,7 +268,7 @@ python_api_name: qiskit.circuit.ControlledGate ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -278,7 +278,7 @@ python_api_name: qiskit.circuit.ControlledGate ### control - + Return the controlled version of itself. Implemented either as a controlled gate (ref. [`ControlledGate`](#qiskit.circuit.ControlledGate "qiskit.circuit.ControlledGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). @@ -301,7 +301,7 @@ python_api_name: qiskit.circuit.ControlledGate ### copy - + Copy of the instruction. **Parameters** @@ -319,7 +319,7 @@ python_api_name: qiskit.circuit.ControlledGate ### inverse - + Invert this gate by calling inverse on the base gate. **Return type** @@ -329,35 +329,34 @@ python_api_name: qiskit.circuit.ControlledGate ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### power - - Creates a unitary gate as gate^exponent. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. **Parameters** - **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – Gate^exponent + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. **Returns** - To which to\_matrix is self.to\_matrix^exponent. - - **Return type** - - .library.UnitaryGate + An operation implementing `gate^exponent` **Raises** - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If Gate is not unitary + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -381,7 +380,7 @@ python_api_name: qiskit.circuit.ControlledGate ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -399,7 +398,7 @@ python_api_name: qiskit.circuit.ControlledGate ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -417,7 +416,7 @@ python_api_name: qiskit.circuit.ControlledGate ### to\_matrix - + Return a Numpy.array for the gate unitary matrix. **Returns** @@ -435,7 +434,7 @@ python_api_name: qiskit.circuit.ControlledGate ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -443,7 +442,7 @@ python_api_name: qiskit.circuit.ControlledGate ### validate\_parameter - + Gate parameters should be int, float, or ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.EquivalenceLibrary.mdx b/docs/api/qiskit/dev/qiskit.circuit.EquivalenceLibrary.mdx index 7824e26c002..ae6e8a876cc 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.EquivalenceLibrary.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.EquivalenceLibrary.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary # EquivalenceLibrary - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A library providing a one-way mapping of Gates to their equivalent implementations as QuantumCircuits. @@ -41,7 +41,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### add\_equivalence - + Add a new equivalence to the library. Future queries for the Gate will include the given circuit, in addition to all existing equivalences (including those from base). Parameterized Gates (those including qiskit.circuit.Parameters in their Gate.params) can be marked equivalent to parameterized circuits, provided the parameters match. @@ -54,7 +54,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### draw - + Draws the equivalence relations available in the library. **Parameters** @@ -78,7 +78,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### get\_entry - + Gets the set of QuantumCircuits circuits from the library which equivalently implement the given Gate. Parameterized circuits will have their parameters replaced with the corresponding entries from Gate.params. @@ -102,7 +102,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### has\_entry - + Check if a library contains any decompositions for gate. **Parameters** @@ -122,7 +122,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### keys - + Return list of keys to key to node index map. **Returns** @@ -136,7 +136,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### node\_index - + Return node index for a given key. **Parameters** @@ -154,7 +154,7 @@ python_api_name: qiskit.circuit.EquivalenceLibrary ### set\_entry - + Set the equivalence record for a Gate. Future queries for the Gate will return only the circuits provided. Parameterized Gates (those including qiskit.circuit.Parameters in their Gate.params) can be marked equivalent to parameterized circuits, provided the parameters match. diff --git a/docs/api/qiskit/dev/qiskit.circuit.ForLoopOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.ForLoopOp.mdx index 9c154b2ba80..c20f52fc9fd 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ForLoopOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ForLoopOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.ForLoopOp # ForLoopOp - + Bases: [`ControlFlowOp`](qiskit.circuit.ControlFlowOp "qiskit.circuit.controlflow.control_flow.ControlFlowOp") A circuit operation which repeatedly executes a subcircuit (`body`) parameterized by a parameter `loop_parameter` through the set of integer values provided in `indexset`. @@ -123,19 +123,19 @@ python_api_name: qiskit.circuit.ForLoopOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -154,7 +154,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -164,7 +164,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### copy - + Copy of the instruction. **Parameters** @@ -182,7 +182,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -206,13 +206,23 @@ python_api_name: qiskit.circuit.ForLoopOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). + ### iter\_captured\_vars + + + Get an iterator over the unique captured variables in all blocks of this construct. + + **Return type** + + [*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.12)")\[[expr.Var](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")] + + ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -236,7 +246,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### replace\_blocks - + Return a new version of this control-flow operations with the [`blocks`](#qiskit.circuit.ForLoopOp.blocks "qiskit.circuit.ForLoopOp.blocks") mapped to the given new ones. Typically this is used in a workflow such as: @@ -267,7 +277,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -285,7 +295,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -303,7 +313,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -311,7 +321,7 @@ python_api_name: qiskit.circuit.ForLoopOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.Gate.mdx index d410c083454..11060e63ec3 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.Gate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.Gate # Gate - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") Unitary gate. @@ -123,19 +123,19 @@ python_api_name: qiskit.circuit.Gate ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation and handling of the arguments and its relationship. For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example: @@ -188,7 +188,7 @@ python_api_name: qiskit.circuit.Gate ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -198,7 +198,7 @@ python_api_name: qiskit.circuit.Gate ### control - + Return the controlled version of itself. Implemented either as a controlled gate (ref. [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.ControlledGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). @@ -221,7 +221,7 @@ python_api_name: qiskit.circuit.Gate ### copy - + Copy of the instruction. **Parameters** @@ -239,7 +239,7 @@ python_api_name: qiskit.circuit.Gate ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -263,35 +263,34 @@ python_api_name: qiskit.circuit.Gate ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### power - - Creates a unitary gate as gate^exponent. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. **Parameters** - **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – Gate^exponent + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. **Returns** - To which to\_matrix is self.to\_matrix^exponent. - - **Return type** - - .library.UnitaryGate + An operation implementing `gate^exponent` **Raises** - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If Gate is not unitary + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -315,7 +314,7 @@ python_api_name: qiskit.circuit.Gate ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -333,7 +332,7 @@ python_api_name: qiskit.circuit.Gate ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -351,7 +350,7 @@ python_api_name: qiskit.circuit.Gate ### to\_matrix - + Return a Numpy.array for the gate unitary matrix. **Returns** @@ -369,7 +368,7 @@ python_api_name: qiskit.circuit.Gate ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -377,7 +376,7 @@ python_api_name: qiskit.circuit.Gate ### validate\_parameter - + Gate parameters should be int, float, or ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.IfElseOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.IfElseOp.mdx index 1e1b4184e62..a087e139ac2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.IfElseOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.IfElseOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.IfElseOp # IfElseOp - + Bases: [`ControlFlowOp`](qiskit.circuit.ControlFlowOp "qiskit.circuit.controlflow.control_flow.ControlFlowOp") A circuit operation which executes a program (`true_body`) if a provided condition (`condition`) evaluates to true, and optionally evaluates another program (`false_body`) otherwise. @@ -127,19 +127,19 @@ python_api_name: qiskit.circuit.IfElseOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -158,7 +158,7 @@ python_api_name: qiskit.circuit.IfElseOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -168,7 +168,7 @@ python_api_name: qiskit.circuit.IfElseOp ### copy - + Copy of the instruction. **Parameters** @@ -186,7 +186,7 @@ python_api_name: qiskit.circuit.IfElseOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -210,13 +210,23 @@ python_api_name: qiskit.circuit.IfElseOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). + ### iter\_captured\_vars + + + Get an iterator over the unique captured variables in all blocks of this construct. + + **Return type** + + [*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.12)")\[[expr.Var](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")] + + ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -240,7 +250,7 @@ python_api_name: qiskit.circuit.IfElseOp ### replace\_blocks - + Replace blocks and return new instruction. **Parameters** @@ -258,7 +268,7 @@ python_api_name: qiskit.circuit.IfElseOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -276,7 +286,7 @@ python_api_name: qiskit.circuit.IfElseOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -294,7 +304,7 @@ python_api_name: qiskit.circuit.IfElseOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -302,7 +312,7 @@ python_api_name: qiskit.circuit.IfElseOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.Instruction.mdx b/docs/api/qiskit/dev/qiskit.circuit.Instruction.mdx index a541874944c..03ac1e6e189 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.Instruction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.Instruction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.Instruction # Instruction - + Bases: [`Operation`](qiskit.circuit.Operation "qiskit.circuit.operation.Operation") Generic quantum instruction. @@ -131,19 +131,19 @@ python_api_name: qiskit.circuit.Instruction ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -162,7 +162,7 @@ python_api_name: qiskit.circuit.Instruction ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -172,7 +172,7 @@ python_api_name: qiskit.circuit.Instruction ### copy - + Copy of the instruction. **Parameters** @@ -190,7 +190,7 @@ python_api_name: qiskit.circuit.Instruction ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -214,13 +214,13 @@ python_api_name: qiskit.circuit.Instruction ### is\_parameterized - + Return whether the [`Instruction`](#qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -244,7 +244,7 @@ python_api_name: qiskit.circuit.Instruction ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -262,7 +262,7 @@ python_api_name: qiskit.circuit.Instruction ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -280,7 +280,7 @@ python_api_name: qiskit.circuit.Instruction ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -288,7 +288,7 @@ python_api_name: qiskit.circuit.Instruction ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.InstructionSet.mdx b/docs/api/qiskit/dev/qiskit.circuit.InstructionSet.mdx index 90dc8f0f4cf..4c239a42062 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.InstructionSet.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.InstructionSet.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.InstructionSet # InstructionSet - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Instruction collection, and their contexts. @@ -51,13 +51,13 @@ python_api_name: qiskit.circuit.InstructionSet ### add - + Add an instruction and its context (where it is attached). ### c\_if - + Set a classical equality condition on all the instructions in this set between the [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") or [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") `classical` and value `val`. @@ -88,7 +88,7 @@ python_api_name: qiskit.circuit.InstructionSet ### inverse - + Invert all instructions. diff --git a/docs/api/qiskit/dev/qiskit.circuit.Operation.mdx b/docs/api/qiskit/dev/qiskit.circuit.Operation.mdx index 1e67843afb7..4a92aeb186a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.Operation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.Operation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.Operation # Operation - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Quantum operation interface. diff --git a/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx b/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx index 017843675af..6de51b7a7bc 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.Parameter.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.Parameter # Parameter - + Bases: [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") A compile-time symbolic parameter. @@ -73,31 +73,31 @@ python_api_name: qiskit.circuit.Parameter ### abs - + Absolute of a ParameterExpression ### arccos - + Arccos of a ParameterExpression ### arcsin - + Arcsin of a ParameterExpression ### arctan - + Arctan of a ParameterExpression ### assign - + Assign one parameter to a value, which can either be numeric or another parameter expression. **Parameters** @@ -112,7 +112,7 @@ python_api_name: qiskit.circuit.Parameter ### bind - + Binds the provided set of parameters to their corresponding values. **Parameters** @@ -141,7 +141,7 @@ python_api_name: qiskit.circuit.Parameter ### conjugate - + Return the conjugate. **Return type** @@ -151,19 +151,19 @@ python_api_name: qiskit.circuit.Parameter ### cos - + Cosine of a ParameterExpression ### exp - + Exponential of a ParameterExpression ### gradient - + Get the derivative of a parameter expression w\.r.t. a specified parameter expression. **Parameters** @@ -181,19 +181,19 @@ python_api_name: qiskit.circuit.Parameter ### is\_real - + Return whether the expression is real ### log - + Logarithm of a ParameterExpression ### numeric - + 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.12)"), [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") and [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.12)") that is valid for this object. In general, an [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") 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.12)") 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.12)") 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.12)") 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.12)") 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.12)") objects while working with symbolic expressions. @@ -215,25 +215,25 @@ python_api_name: qiskit.circuit.Parameter ### sign - + Sign of a ParameterExpression ### sin - + Sine of a ParameterExpression ### subs - + Substitute self with the corresponding parameter in `parameter_map`. ### sympify - + Return symbolic expression as a raw Sympy or Symengine object. Symengine is used preferentially; if both are available, the result will always be a `symengine` object. Symengine is a separate library but has integration with Sympy. @@ -245,7 +245,7 @@ python_api_name: qiskit.circuit.Parameter ### tan - + Tangent of a ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx b/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx index b1efdd0777c..659d7466270 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.ParameterExpression.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.ParameterExpression # ParameterExpression - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") ParameterExpression class to enable creating expressions of Parameters. @@ -34,31 +34,31 @@ python_api_name: qiskit.circuit.ParameterExpression ### abs - + Absolute of a ParameterExpression ### arccos - + Arccos of a ParameterExpression ### arcsin - + Arcsin of a ParameterExpression ### arctan - + Arctan of a ParameterExpression ### assign - + Assign one parameter to a value, which can either be numeric or another parameter expression. **Parameters** @@ -77,7 +77,7 @@ python_api_name: qiskit.circuit.ParameterExpression ### bind - + Binds the provided set of parameters to their corresponding values. **Parameters** @@ -106,7 +106,7 @@ python_api_name: qiskit.circuit.ParameterExpression ### conjugate - + Return the conjugate. **Return type** @@ -116,19 +116,19 @@ python_api_name: qiskit.circuit.ParameterExpression ### cos - + Cosine of a ParameterExpression ### exp - + Exponential of a ParameterExpression ### gradient - + Get the derivative of a parameter expression w\.r.t. a specified parameter expression. **Parameters** @@ -146,19 +146,19 @@ python_api_name: qiskit.circuit.ParameterExpression ### is\_real - + Return whether the expression is real ### log - + Logarithm of a ParameterExpression ### numeric - + 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.12)"), [`float`](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") and [`complex`](https://docs.python.org/3/library/functions.html#complex "(in Python v3.12)") that is valid for this object. In general, an [`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") 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.12)") 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.12)") 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.12)") 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.12)") 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.12)") objects while working with symbolic expressions. @@ -180,19 +180,19 @@ python_api_name: qiskit.circuit.ParameterExpression ### sign - + Sign of a ParameterExpression ### sin - + Sine of a ParameterExpression ### subs - + Returns a new Expression with replacement Parameters. **Parameters** @@ -217,7 +217,7 @@ python_api_name: qiskit.circuit.ParameterExpression ### sympify - + Return symbolic expression as a raw Sympy or Symengine object. Symengine is used preferentially; if both are available, the result will always be a `symengine` object. Symengine is a separate library but has integration with Sympy. @@ -229,7 +229,7 @@ python_api_name: qiskit.circuit.ParameterExpression ### tan - + Tangent of a ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.ParameterVector.mdx b/docs/api/qiskit/dev/qiskit.circuit.ParameterVector.mdx index ab7fbedc7fa..29c5a3bab7f 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.12)") ParameterVector class to quickly generate lists of parameters. @@ -31,13 +31,13 @@ python_api_name: qiskit.circuit.ParameterVector ### index - + Returns first index of value. ### resize - + Resize the parameter vector. If necessary, new elements are generated. If length is smaller than before, the previous elements are cached and not re-generated if the vector is enlarged again. This is to ensure that the parameter instances do not change. diff --git a/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx b/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx index a9a7b85393c..ec24327c5c0 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.QuantumCircuit.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.QuantumCircuit # QuantumCircuit - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Create a new circuit. @@ -153,7 +153,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### instances - + ### layout @@ -317,13 +317,13 @@ python_api_name: qiskit.circuit.QuantumCircuit ### add\_bits - + Add Bits to the circuit. ### add\_calibration - + Register a low-level, custom pulse definition for the given gate. **Parameters** @@ -340,7 +340,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### add\_capture - + Add a variable to the circuit that it should capture from a scope it will be contained within. This method requires a [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") node to enforce that you’ve got a handle to one, because you will need to declare the same variable using the same object into the outer circuit. @@ -358,7 +358,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### add\_input - + Register a variable as an input to the circuit. **Parameters** @@ -377,13 +377,13 @@ python_api_name: qiskit.circuit.QuantumCircuit ### add\_register - + Add registers. ### add\_uninitialized\_var - + Add a variable with no initializer. In most cases, you should use [`add_var()`](#qiskit.circuit.QuantumCircuit.add_var "qiskit.circuit.QuantumCircuit.add_var") to initialize the variable. To use this function, you must already hold a [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") instance, as the use of the function typically only makes sense in copying contexts. @@ -401,7 +401,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### add\_var - + Add a classical variable with automatic storage and scope to this circuit. The variable is considered to have been “declared” at the beginning of the circuit, but it only becomes initialized at the point of the circuit that you call this method, so it can depend on variables defined before it. @@ -471,7 +471,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### append - + Append one or more instructions to the end of the circuit, modifying the circuit in place. The `qargs` and `cargs` will be expanded and broadcast according to the rules of the given [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction"), and any non-[`Bit`](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit") specifiers (such as integer indices) will be resolved into the relevant instances. @@ -483,6 +483,7 @@ python_api_name: qiskit.circuit.QuantumCircuit * **instruction** ([*Operation*](qiskit.circuit.Operation "qiskit.circuit.Operation") *|*[*CircuitInstruction*](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction")) – [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") instance to append, or a [`CircuitInstruction`](qiskit.circuit.CircuitInstruction "qiskit.circuit.CircuitInstruction") with all its context. * **qargs** (*Sequence\[QubitSpecifier] | None*) – specifiers of the [`Qubit`](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit")s to attach instruction to. * **cargs** (*Sequence\[ClbitSpecifier] | None*) – specifiers of the [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit")s to attach instruction to. + * **copy** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – if `True` (the default), then the incoming `instruction` is copied before adding it to the circuit if it contains symbolic parameters, so it can be safely mutated without affecting other circuits the same instruction might be in. If you are sure this instruction will not be in other circuits, you can set this `False` for a small speedup. **Returns** @@ -499,7 +500,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### assign\_parameters - + Assign parameters to new parameters or values. If `parameters` is passed as a dictionary, the keys should be [`Parameter`](qiskit.circuit.Parameter "qiskit.circuit.Parameter") instances in the current circuit. The values of the dictionary can either be numeric values or new parameter objects. @@ -573,7 +574,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### barrier - + Apply `Barrier`. If `qargs` is empty, applies to all qubits in the circuit. **Parameters** @@ -592,7 +593,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### break\_loop - + Apply [`BreakLoopOp`](qiskit.circuit.BreakLoopOp "qiskit.circuit.BreakLoopOp"). @@ -614,7 +615,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cast - + Best effort to cast value to type. Otherwise, returns the value. **Return type** @@ -624,7 +625,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cbit\_argument\_conversion - + Converts several classical bit representations (such as indexes, range, etc.) into a list of classical bits. **Parameters** @@ -642,7 +643,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ccx - + Apply [`CCXGate`](qiskit.circuit.library.CCXGate "qiskit.circuit.library.CCXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -665,7 +666,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ccz - + Apply [`CCZGate`](qiskit.circuit.library.CCZGate "qiskit.circuit.library.CCZGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -689,7 +690,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ch - + Apply [`CHGate`](qiskit.circuit.library.CHGate "qiskit.circuit.library.CHGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -712,7 +713,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### clear - + Clear all instructions in self. Clearing the circuits will keep the metadata and calibrations. @@ -720,7 +721,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cls\_instances - + Return the current number of instances of this class, useful for auto naming. **Return type** @@ -730,7 +731,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cls\_prefix - + Return the prefix to use for auto naming. **Return type** @@ -740,20 +741,44 @@ python_api_name: qiskit.circuit.QuantumCircuit ### compose - + Compose circuit with `other` circuit or instruction, optionally permuting wires. `other` can be narrower or of equal width to `self`. + When dealing with realtime variables ([`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") instances), there are two principal strategies for using [`compose()`](#qiskit.circuit.QuantumCircuit.compose "qiskit.circuit.QuantumCircuit.compose"): + + 1. The `other` circuit is treated as entirely additive, including its variables. The variables in `other` must be entirely distinct from those in `self` (use `var_remap` to help with this), and all variables in `other` will be declared anew in the output with matching input/capture/local scoping to how they are in `other`. This is generally what you want if you’re joining two unrelated circuits. + 2. The `other` circuit was created as an exact extension to `self` to be inlined onto it, including acting on the existing variables in their states at the end of `self`. In this case, `other` should be created with all these variables to be inlined declared as “captures”, and then you can use `inline_captures=True` in this method to link them. This is generally what you want if you’re building up a circuit by defining layers on-the-fly, or rebuilding a circuit using layers taken from itself. You might find the `vars_mode="captures"` argument to [`copy_empty_like()`](#qiskit.circuit.QuantumCircuit.copy_empty_like "qiskit.circuit.QuantumCircuit.copy_empty_like") useful to create each layer’s base, in this case. + **Parameters** * **other** ([*qiskit.circuit.Instruction*](qiskit.circuit.Instruction "qiskit.circuit.Instruction") *or*[*QuantumCircuit*](#qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")) – (sub)circuit or instruction to compose onto self. If not a [`QuantumCircuit`](#qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"), this can be anything that [`append`](#qiskit.circuit.QuantumCircuit.append "qiskit.circuit.QuantumCircuit.append") will accept. + * **qubits** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Qubit*](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit")*|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – qubits of self to compose onto. + * **clbits** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Clbit*](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit")*|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – clbits of self to compose onto. + * **front** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, front composition will be performed. This is not possible within control-flow builder context managers. + * **inplace** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, modify the object. Otherwise return composed circuit. + * **wrap** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, wraps the other circuit into a gate (or instruction, depending on whether it contains only unitary instructions) before composing it onto self. + * **copy** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If `True` (the default), then the input is treated as shared, and any contained instructions will be copied, if they might need to be mutated in the future. You can set this to `False` if the input should be considered owned by the base circuit, in order to avoid unnecessary copies; in this case, it is not valid to use `other` afterwards, and some instructions may have been mutated in place. + + * **var\_remap** (*Mapping*) – + + mapping to use to rewrite [`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") nodes in `other` as they are inlined into `self`. This can be used to avoid naming conflicts. + + Both keys and values can be given as strings or direct [`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") instances. If a key is a string, it matches any [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") with the same name. If a value is a string, whenever a new key matches a it, a new [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") is created with the correct type. If a value is a [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var"), its `type` must exactly match that of the variable it is replacing. + + * **inline\_captures** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – + + if `True`, then all “captured” [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") nodes in the `other` [`QuantumCircuit`](#qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") are assumed to refer to variables already declared in `self` (as any input/capture/local type), and the uses in `other` will apply to the existing variables. If you want to build up a layer for an existing circuit to use with [`compose()`](#qiskit.circuit.QuantumCircuit.compose "qiskit.circuit.QuantumCircuit.compose"), you might find the `vars_mode="captures"` argument to [`copy_empty_like()`](#qiskit.circuit.QuantumCircuit.copy_empty_like "qiskit.circuit.QuantumCircuit.copy_empty_like") useful. Any remapping in `vars_remap` occurs before evaluating this variable inlining. + + If this is `False` (the default), then all variables in `other` will be required to be distinct from those in `self`, and new declarations will be made for them. + **Returns** the composed circuit (returns None if inplace==True). @@ -794,7 +819,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### continue\_loop - + Apply [`ContinueLoopOp`](qiskit.circuit.ContinueLoopOp "qiskit.circuit.ContinueLoopOp"). @@ -816,7 +841,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### control - + Control this circuit on `num_ctrl_qubits` qubits. **Parameters** @@ -841,7 +866,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### copy - + Copy the circuit. **Parameters** @@ -859,22 +884,39 @@ python_api_name: qiskit.circuit.QuantumCircuit ### copy\_empty\_like - + Return a copy of self with the same structure but empty. - **That structure includes:** + That structure includes: * name, calibrations and other metadata * global phase * all the qubits and clbits, including the registers + * the realtime variables defined in the circuit, handled according to the `vars` keyword argument. - If the circuit contains any local variable declarations (those added by the `declarations` argument to the circuit constructor, or using [`add_var()`](#qiskit.circuit.QuantumCircuit.add_var "qiskit.circuit.QuantumCircuit.add_var")), they will be **uninitialized** in the output circuit. You will need to manually add store instructions for them (see [`Store`](circuit#qiskit.circuit.Store "qiskit.circuit.Store") and [`QuantumCircuit.store()`](#qiskit.circuit.QuantumCircuit.store "qiskit.circuit.QuantumCircuit.store")) to initialize them. + If the circuit contains any local variable declarations (those added by the `declarations` argument to the circuit constructor, or using [`add_var()`](#qiskit.circuit.QuantumCircuit.add_var "qiskit.circuit.QuantumCircuit.add_var")), they may be **uninitialized** in the output circuit. You will need to manually add store instructions for them (see [`Store`](circuit#qiskit.circuit.Store "qiskit.circuit.Store") and [`QuantumCircuit.store()`](#qiskit.circuit.QuantumCircuit.store "qiskit.circuit.QuantumCircuit.store")) to initialize them. **Parameters** - **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – Name for the copied circuit. If None, then the name stays the same. + * **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – Name for the copied circuit. If None, then the name stays the same. + + * **vars\_mode** (*Literal\['alike', 'captures', 'drop']*) – + + The mode to handle realtime variables in. + + **alike** + + The variables in the output circuit will have the same declaration semantics as in the original circuit. For example, `input` variables in the source will be `input` variables in the output circuit. + + **captures** + + All variables will be converted to captured variables. This is useful when you are building a new layer for an existing circuit that you will want to [`compose()`](#qiskit.circuit.QuantumCircuit.compose "qiskit.circuit.QuantumCircuit.compose") onto the base, since [`compose()`](#qiskit.circuit.QuantumCircuit.compose "qiskit.circuit.QuantumCircuit.compose") can inline captures onto the base circuit (but not other variables). + + **drop** + + The output circuit will have no variables defined. **Returns** @@ -887,7 +929,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### count\_ops - + Count each operation kind in the circuit. **Returns** @@ -901,7 +943,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cp - + Apply [`CPhaseGate`](qiskit.circuit.library.CPhaseGate "qiskit.circuit.library.CPhaseGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -925,7 +967,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### crx - + Apply [`CRXGate`](qiskit.circuit.library.CRXGate "qiskit.circuit.library.CRXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -949,7 +991,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cry - + Apply [`CRYGate`](qiskit.circuit.library.CRYGate "qiskit.circuit.library.CRYGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -973,7 +1015,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### crz - + Apply [`CRZGate`](qiskit.circuit.library.CRZGate "qiskit.circuit.library.CRZGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -997,7 +1039,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cs - + Apply [`CSGate`](qiskit.circuit.library.CSGate "qiskit.circuit.library.CSGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1020,7 +1062,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### csdg - + Apply [`CSdgGate`](qiskit.circuit.library.CSdgGate "qiskit.circuit.library.CSdgGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1043,7 +1085,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cswap - + Apply [`CSwapGate`](qiskit.circuit.library.CSwapGate "qiskit.circuit.library.CSwapGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1067,7 +1109,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### csx - + Apply [`CSXGate`](qiskit.circuit.library.CSXGate "qiskit.circuit.library.CSXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1090,7 +1132,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cu - + Apply [`CUGate`](qiskit.circuit.library.CUGate "qiskit.circuit.library.CUGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1117,7 +1159,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cx - + Apply [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1140,7 +1182,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cy - + Apply [`CYGate`](qiskit.circuit.library.CYGate "qiskit.circuit.library.CYGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1163,7 +1205,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### cz - + Apply [`CZGate`](qiskit.circuit.library.CZGate "qiskit.circuit.library.CZGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1186,7 +1228,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### dcx - + Apply [`DCXGate`](qiskit.circuit.library.DCXGate "qiskit.circuit.library.DCXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1207,7 +1249,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### decompose - + Call a decomposition pass on this circuit, to decompose one level (shallow decompose). **Parameters** @@ -1226,7 +1268,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### delay - + Apply [`Delay`](circuit#qiskit.circuit.Delay "qiskit.circuit.Delay"). If qarg is `None`, applies to all qubits. When applying to multiple qubits, delays with the same duration will be created. **Parameters** @@ -1250,7 +1292,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### depth - + Return circuit depth (i.e., length of critical path). **Parameters** @@ -1272,7 +1314,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### draw - + Draw the quantum circuit. Use the output parameter to choose the drawing format: **text**: ASCII art TextDrawing that can be printed in the console. @@ -1370,7 +1412,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ecr - + Apply [`ECRGate`](qiskit.circuit.library.ECRGate "qiskit.circuit.library.ECRGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1391,7 +1433,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### find\_bit - + Find locations in the circuit which can be used to reference a given [`Bit`](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit"). **Parameters** @@ -1424,7 +1466,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### for\_loop - + Create a `for` loop on this circuit. There are two forms for calling this function. If called with all its arguments (with the possible exception of `label`), it will create a [`ForLoopOp`](qiskit.circuit.ForLoopOp "qiskit.circuit.ForLoopOp") with the given `body`. If `body` (and `qubits` and `clbits`) are *not* passed, then this acts as a context manager, which, when entered, provides a loop variable (unless one is given, in which case it will be reused) and will automatically build a [`ForLoopOp`](qiskit.circuit.ForLoopOp "qiskit.circuit.ForLoopOp") when the scope finishes. In this form, you do not need to keep track of the qubits or clbits you are using, because the scope will handle it for you. @@ -1475,7 +1517,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### from\_instructions - + Construct a circuit from an iterable of CircuitInstructions. **Parameters** @@ -1498,7 +1540,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### from\_qasm\_file - + Read an OpenQASM 2.0 program from a file and convert to an instance of [`QuantumCircuit`](#qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -1520,7 +1562,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### from\_qasm\_str - + Convert a string containing an OpenQASM 2.0 program to a [`QuantumCircuit`](#qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -1542,7 +1584,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### get\_instructions - + Get instructions matching name. **Parameters** @@ -1560,7 +1602,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### get\_parameter - + Retrieve a compile-time parameter that is accessible in this circuit scope by name. **Parameters** @@ -1612,7 +1654,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### get\_var - + Retrieve a variable that is accessible in this circuit scope by name. **Parameters** @@ -1662,7 +1704,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### h - + Apply [`HGate`](qiskit.circuit.library.HGate "qiskit.circuit.library.HGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1682,13 +1724,13 @@ python_api_name: qiskit.circuit.QuantumCircuit ### has\_calibration\_for - + Return True if the circuit has a calibration defined for the instruction context. In this case, the operation does not need to be translated to the device basis. ### has\_parameter - + Check whether a parameter object exists in this circuit. **Parameters** @@ -1716,7 +1758,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### has\_register - + Test if this circuit has the register r. **Parameters** @@ -1734,7 +1776,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### has\_var - + Check whether a variable is accessible in this scope. **Parameters** @@ -1762,7 +1804,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### id - + Apply [`IGate`](qiskit.circuit.library.IGate "qiskit.circuit.library.IGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -1782,7 +1824,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### if\_else - + Apply [`IfElseOp`](qiskit.circuit.IfElseOp "qiskit.circuit.IfElseOp"). @@ -1826,7 +1868,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### if\_test - + Create an `if` statement on this circuit. There are two forms for calling this function. If called with all its arguments (with the possible exception of `label`), it will create a [`IfElseOp`](qiskit.circuit.IfElseOp "qiskit.circuit.IfElseOp") with the given `true_body`, and there will be no branch for the `false` condition (see also the [`if_else()`](#qiskit.circuit.QuantumCircuit.if_else "qiskit.circuit.QuantumCircuit.if_else") method). However, if `true_body` (and `qubits` and `clbits`) are *not* passed, then this acts as a context manager, which can be used to build `if` statements. The return value of the `with` statement is a chainable context manager, which can be used to create subsequent `else` blocks. In this form, you do not need to keep track of the qubits or clbits you are using, because the scope will handle it for you. @@ -1880,7 +1922,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### initialize - + Initialize qubits in a specific state. Qubit initialization is done by first resetting the qubits to $|0\rangle$ followed by calling [`StatePreparation`](qiskit.circuit.library.StatePreparation "qiskit.circuit.library.StatePreparation") class to prepare the qubits in a specified state. Both these steps are included in the [`Initialize`](qiskit.circuit.library.Initialize "qiskit.circuit.library.Initialize") instruction. @@ -1969,7 +2011,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### inverse - + Invert (take adjoint of) this circuit. This is done by recursively inverting all gates. @@ -2015,7 +2057,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### iswap - + Apply [`iSwapGate`](qiskit.circuit.library.iSwapGate "qiskit.circuit.library.iSwapGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2036,7 +2078,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### iter\_captured\_vars - + Get an iterable over all real-time classical variables that are captured by this circuit scope from a containing scope. This excludes input variables (see [`iter_input_vars()`](#qiskit.circuit.QuantumCircuit.iter_input_vars "qiskit.circuit.QuantumCircuit.iter_input_vars")) and locally declared variables (see [`iter_declared_vars()`](#qiskit.circuit.QuantumCircuit.iter_declared_vars "qiskit.circuit.QuantumCircuit.iter_declared_vars")). **Return type** @@ -2046,7 +2088,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### iter\_declared\_vars - + Get an iterable over all real-time classical variables that are declared with automatic storage duration in this scope. This excludes input variables (see [`iter_input_vars()`](#qiskit.circuit.QuantumCircuit.iter_input_vars "qiskit.circuit.QuantumCircuit.iter_input_vars")) and captured variables (see [`iter_captured_vars()`](#qiskit.circuit.QuantumCircuit.iter_captured_vars "qiskit.circuit.QuantumCircuit.iter_captured_vars")). **Return type** @@ -2056,7 +2098,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### iter\_input\_vars - + Get an iterable over all real-time classical variables that are declared as inputs to this circuit scope. This excludes locally declared variables (see [`iter_declared_vars()`](#qiskit.circuit.QuantumCircuit.iter_declared_vars "qiskit.circuit.QuantumCircuit.iter_declared_vars")) and captured variables (see [`iter_captured_vars()`](#qiskit.circuit.QuantumCircuit.iter_captured_vars "qiskit.circuit.QuantumCircuit.iter_captured_vars")). **Return type** @@ -2066,7 +2108,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### iter\_vars - + Get an iterable over all real-time classical variables in scope within this circuit. This method will iterate over all variables in scope. For more fine-grained iterators, see [`iter_declared_vars()`](#qiskit.circuit.QuantumCircuit.iter_declared_vars "qiskit.circuit.QuantumCircuit.iter_declared_vars"), [`iter_input_vars()`](#qiskit.circuit.QuantumCircuit.iter_input_vars "qiskit.circuit.QuantumCircuit.iter_input_vars") and [`iter_captured_vars()`](#qiskit.circuit.QuantumCircuit.iter_captured_vars "qiskit.circuit.QuantumCircuit.iter_captured_vars"). @@ -2078,7 +2120,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### mcp - + Apply [`MCPhaseGate`](qiskit.circuit.library.MCPhaseGate "qiskit.circuit.library.MCPhaseGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2101,7 +2143,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### mcrx - + Apply Multiple-Controlled X rotation gate **Parameters** @@ -2119,7 +2161,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### mcry - + Apply Multiple-Controlled Y rotation gate **Parameters** @@ -2139,7 +2181,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### mcrz - + Apply Multiple-Controlled Z rotation gate **Parameters** @@ -2157,7 +2199,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### mcx - + Apply [`MCXGate`](qiskit.circuit.library.MCXGate "qiskit.circuit.library.MCXGate"). The multi-cX gate can be implemented using different techniques, which use different numbers of ancilla qubits and have varying circuit depth. These modes are: @@ -2193,7 +2235,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### measure - + Measure a quantum bit (`qubit`) in the Z basis into a classical bit (`cbit`). When a quantum state is measured, a qubit is projected in the computational (Pauli Z) basis to either $\lvert 0 \rangle$ or $\lvert 1 \rangle$. The classical bit `cbit` indicates the result of that projection as a `0` or a `1` respectively. This operation is non-reversible. @@ -2269,7 +2311,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### measure\_active - + Adds measurement to all non-idle qubits. Creates a new ClassicalRegister with a size equal to the number of non-idle qubits being measured. Returns a new circuit with measurements if inplace=False. @@ -2289,7 +2331,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### measure\_all - + Adds measurement to all qubits. By default, adds new classical bits in a [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") to store these measurements. If `add_bits=False`, the results of the measurements will instead be stored in the already existing classical bits, with qubit `n` being measured into classical bit `n`. @@ -2316,7 +2358,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ms - + Apply [`MSGate`](qiskit.circuit.library.MSGate "qiskit.circuit.library.MSGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2337,7 +2379,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### num\_connected\_components - + How many non-entangled subcircuits can the circuit be factored to. **Parameters** @@ -2355,7 +2397,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### num\_nonlocal\_gates - + Return number of non-local gates (i.e. involving 2+ qubits). Conditional nonlocal gates are also included. @@ -2367,7 +2409,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### num\_tensor\_factors - + Computes the number of tensor factors in the unitary (quantum) part of the circuit only. **Notes** @@ -2381,7 +2423,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### num\_unitary\_factors - + Computes the number of tensor factors in the unitary (quantum) part of the circuit only. **Return type** @@ -2391,7 +2433,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### p - + Apply [`PhaseGate`](qiskit.circuit.library.PhaseGate "qiskit.circuit.library.PhaseGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2412,7 +2454,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### pauli - + Apply [`PauliGate`](qiskit.circuit.library.PauliGate "qiskit.circuit.library.PauliGate"). **Parameters** @@ -2431,19 +2473,20 @@ python_api_name: qiskit.circuit.QuantumCircuit ### power - + Raise this circuit to the power of `power`. - If `power` is a positive integer and `matrix_power` is `False`, this implementation defaults to calling `repeat`. Otherwise, if the circuit is unitary, the matrix is computed to calculate the matrix power. + If `power` is a positive integer and both `matrix_power` and `annotated` are `False`, this implementation defaults to calling `repeat`. Otherwise, the circuit is converted into a gate, and a new circuit, containing this gate raised to the given power, is returned. The gate raised to the given power is implemented either as a unitary gate if `annotated` is `False` or as an annotated operation if `annotated` is `True`. **Parameters** * **power** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – The power to raise this circuit to. - * **matrix\_power** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, the circuit is converted to a matrix and then the matrix power is computed. If False, and `power` is a positive integer, the implementation defaults to `repeat`. + * **matrix\_power** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the inner power gate can be implemented as a unitary gate. + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the inner power gate can be implemented as an annotated operation. **Raises** - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If the circuit needs to be converted to a gate but it is not unitary. + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If the circuit needs to be converted to a unitary gate, but is not unitary. **Returns** @@ -2456,7 +2499,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### prepare\_state - + Prepare qubits in a specific state. This class implements a state preparing unitary. Unlike [`initialize()`](#qiskit.circuit.QuantumCircuit.initialize "qiskit.circuit.QuantumCircuit.initialize") it does not reset the qubits first. @@ -2551,7 +2594,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### qbit\_argument\_conversion - + Converts several qubit representations (such as indexes, range, etc.) into a list of qubits. **Parameters** @@ -2569,7 +2612,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### qubit\_duration - + Return the duration between the start and stop time of the first and last instructions, excluding delays, over the supplied qubits. Its time unit is `self.unit`. **Parameters** @@ -2587,7 +2630,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### qubit\_start\_time - + Return the start time of the first instruction, excluding delays, over the supplied qubits. Its time unit is `self.unit`. Return 0 if there are no instructions over qubits @@ -2612,7 +2655,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### qubit\_stop\_time - + Return the stop time of the last instruction, excluding delays, over the supplied qubits. Its time unit is `self.unit`. Return 0 if there are no instructions over qubits @@ -2637,7 +2680,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### r - + Apply [`RGate`](qiskit.circuit.library.RGate "qiskit.circuit.library.RGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2659,7 +2702,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rcccx - + Apply [`RC3XGate`](qiskit.circuit.library.RC3XGate "qiskit.circuit.library.RC3XGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2682,7 +2725,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rccx - + Apply [`RCCXGate`](qiskit.circuit.library.RCCXGate "qiskit.circuit.library.RCCXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2704,7 +2747,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### remove\_final\_measurements - + Removes final measurements and barriers on all qubits if they are present. Deletes the classical registers that were used to store the values from these measurements that become idle as a result of this operation, and deletes classical bits that are referenced only by removed registers, or that aren’t referenced at all but have become idle as a result of this operation. Measurements and barriers are considered final if they are followed by no other operations (aside from other measurements or barriers.) @@ -2724,7 +2767,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### repeat - + Repeat this circuit `reps` times. **Parameters** @@ -2742,7 +2785,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### reset - + Reset the quantum bit(s) to their default state. **Parameters** @@ -2760,7 +2803,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### reverse\_bits - + Return a circuit with the opposite order of wires. The circuit is “vertically” flipped. If a circuit is defined over multiple registers, the resulting circuit will have the same registers but with their order flipped. @@ -2812,7 +2855,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### reverse\_ops - + Reverse the circuit by reversing the order of instructions. This is done by recursively reversing all instructions. It does not invert (adjoint) any gate. @@ -2850,7 +2893,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rv - + Apply [`RVGate`](qiskit.circuit.library.RVGate "qiskit.circuit.library.RVGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2875,7 +2918,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rx - + Apply [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2897,7 +2940,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rxx - + Apply [`RXXGate`](qiskit.circuit.library.RXXGate "qiskit.circuit.library.RXXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2919,7 +2962,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ry - + Apply [`RYGate`](qiskit.circuit.library.RYGate "qiskit.circuit.library.RYGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2941,7 +2984,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### ryy - + Apply [`RYYGate`](qiskit.circuit.library.RYYGate "qiskit.circuit.library.RYYGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2963,7 +3006,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rz - + Apply [`RZGate`](qiskit.circuit.library.RZGate "qiskit.circuit.library.RZGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -2984,7 +3027,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rzx - + Apply [`RZXGate`](qiskit.circuit.library.RZXGate "qiskit.circuit.library.RZXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3006,7 +3049,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### rzz - + Apply [`RZZGate`](qiskit.circuit.library.RZZGate "qiskit.circuit.library.RZZGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3028,7 +3071,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### s - + Apply [`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3048,7 +3091,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### sdg - + Apply [`SdgGate`](qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3068,7 +3111,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### size - + Returns total number of instructions in circuit. **Parameters** @@ -3086,7 +3129,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### store - + Store the result of the given real-time classical expression `rvalue` in the memory location defined by `lvalue`. Typically `lvalue` will be a [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") node and `rvalue` will be some [`Expr`](circuit_classical#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr") to write into it, but anything that [`expr.lift()`](circuit_classical#qiskit.circuit.classical.expr.lift "qiskit.circuit.classical.expr.lift") can raise to an [`Expr`](circuit_classical#qiskit.circuit.classical.expr.Expr "qiskit.circuit.classical.expr.Expr") is permissible in both places, and it will be called on them. @@ -3113,7 +3156,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### swap - + Apply [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3134,7 +3177,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### switch - + Create a `switch`/`case` structure on this circuit. There are two forms for calling this function. If called with all its arguments (with the possible exception of `label`), it will create a [`SwitchCaseOp`](qiskit.circuit.SwitchCaseOp "qiskit.circuit.SwitchCaseOp") with the given case structure. If `cases` (and `qubits` and `clbits`) are *not* passed, then this acts as a context manager, which will automatically build a [`SwitchCaseOp`](qiskit.circuit.SwitchCaseOp "qiskit.circuit.SwitchCaseOp") when the scope finishes. In this form, you do not need to keep track of the qubits or clbits you are using, because the scope will handle it for you. @@ -3181,7 +3224,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### sx - + Apply [`SXGate`](qiskit.circuit.library.SXGate "qiskit.circuit.library.SXGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3201,7 +3244,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### sxdg - + Apply [`SXdgGate`](qiskit.circuit.library.SXdgGate "qiskit.circuit.library.SXdgGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3221,7 +3264,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### t - + Apply [`TGate`](qiskit.circuit.library.TGate "qiskit.circuit.library.TGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3241,7 +3284,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### tdg - + Apply [`TdgGate`](qiskit.circuit.library.TdgGate "qiskit.circuit.library.TdgGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3261,7 +3304,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### tensor - + Tensor `self` with `other`. Remember that in the little-endian convention the leftmost operation will be at the bottom of the circuit. See also [the docs](/build/circuit-construction) for more information. @@ -3308,7 +3351,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### to\_gate - + Create a Gate out of this circuit. **Parameters** @@ -3327,7 +3370,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### to\_instruction - + Create an Instruction out of this circuit. **Parameters** @@ -3346,7 +3389,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### u - + Apply [`UGate`](qiskit.circuit.library.UGate "qiskit.circuit.library.UGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3369,7 +3412,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### unitary - + Apply unitary gate specified by `obj` to `qubits`. **Parameters** @@ -3403,7 +3446,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### while\_loop - + Create a `while` loop on this circuit. There are two forms for calling this function. If called with all its arguments (with the possible exception of `label`), it will create a `WhileLoopOp` with the given `body`. If `body` (and `qubits` and `clbits`) are *not* passed, then this acts as a context manager, which will automatically build a `WhileLoopOp` when the scope finishes. In this form, you do not need to keep track of the qubits or clbits you are using, because the scope will handle it for you. @@ -3444,7 +3487,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### width - + Return number of qubits plus clbits in circuit. **Returns** @@ -3458,7 +3501,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### x - + Apply [`XGate`](qiskit.circuit.library.XGate "qiskit.circuit.library.XGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3479,7 +3522,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### y - + Apply [`YGate`](qiskit.circuit.library.YGate "qiskit.circuit.library.YGate"). For the full matrix form of this gate, see the underlying gate documentation. @@ -3499,7 +3542,7 @@ python_api_name: qiskit.circuit.QuantumCircuit ### z - + Apply [`ZGate`](qiskit.circuit.library.ZGate "qiskit.circuit.library.ZGate"). For the full matrix form of this gate, see the underlying gate documentation. diff --git a/docs/api/qiskit/dev/qiskit.circuit.SwitchCaseOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.SwitchCaseOp.mdx index 1cd895ae30f..9019d9bf085 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.SwitchCaseOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.SwitchCaseOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp # SwitchCaseOp - + Bases: [`ControlFlowOp`](qiskit.circuit.ControlFlowOp "qiskit.circuit.controlflow.control_flow.ControlFlowOp") A circuit operation that executes one particular circuit block based on matching a given `target` against an ordered list of `values`. The special value [`CASE_DEFAULT`](circuit#qiskit.circuit.CASE_DEFAULT "qiskit.circuit.CASE_DEFAULT") can be used to represent a default condition. @@ -123,19 +123,19 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -154,7 +154,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -164,7 +164,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### cases - + Return a lookup table from case labels to the circuit that would be executed in that case. This object is not generally suitable for creating a new [`SwitchCaseOp`](#qiskit.circuit.SwitchCaseOp "qiskit.circuit.SwitchCaseOp") because any keys that point to the same object will not be grouped. @@ -176,7 +176,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### cases\_specifier - + Return an iterable where each element is a 2-tuple whose first element is a tuple of jump values, and whose second is the single circuit block that is associated with those values. This is an abstract specification of the jump table suitable for creating new [`SwitchCaseOp`](#qiskit.circuit.SwitchCaseOp "qiskit.circuit.SwitchCaseOp") instances. @@ -194,7 +194,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### copy - + Copy of the instruction. **Parameters** @@ -212,7 +212,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -236,13 +236,23 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). + ### iter\_captured\_vars + + + Get an iterator over the unique captured variables in all blocks of this construct. + + **Return type** + + [*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.12)")\[[expr.Var](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")] + + ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -266,7 +276,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### replace\_blocks - + Return a new version of this control-flow operations with the [`blocks`](#qiskit.circuit.SwitchCaseOp.blocks "qiskit.circuit.SwitchCaseOp.blocks") mapped to the given new ones. Typically this is used in a workflow such as: @@ -301,7 +311,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -319,7 +329,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -337,7 +347,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -345,7 +355,7 @@ python_api_name: qiskit.circuit.SwitchCaseOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.WhileLoopOp.mdx b/docs/api/qiskit/dev/qiskit.circuit.WhileLoopOp.mdx index 2bab069e20f..8376f9bb67a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.WhileLoopOp.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.WhileLoopOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.WhileLoopOp # WhileLoopOp - + Bases: [`ControlFlowOp`](qiskit.circuit.ControlFlowOp "qiskit.circuit.controlflow.control_flow.ControlFlowOp") A circuit operation which repeatedly executes a subcircuit (`body`) until a condition (`condition`) evaluates as False. @@ -124,19 +124,19 @@ python_api_name: qiskit.circuit.WhileLoopOp ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -155,7 +155,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -165,7 +165,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### copy - + Copy of the instruction. **Parameters** @@ -183,7 +183,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -207,13 +207,23 @@ python_api_name: qiskit.circuit.WhileLoopOp ### is\_parameterized - + Return whether the [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") contains [compile-time parameters](circuit#circuit-compile-time-parameters). + ### iter\_captured\_vars + + + Get an iterator over the unique captured variables in all blocks of this construct. + + **Return type** + + [*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.12)")\[[expr.Var](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")] + + ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -237,7 +247,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### replace\_blocks - + Return a new version of this control-flow operations with the [`blocks`](#qiskit.circuit.WhileLoopOp.blocks "qiskit.circuit.WhileLoopOp.blocks") mapped to the given new ones. Typically this is used in a workflow such as: @@ -268,7 +278,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -286,7 +296,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -304,7 +314,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -312,7 +322,7 @@ python_api_name: qiskit.circuit.WhileLoopOp ### validate\_parameter - + Instruction parameters has no validation or normalization. diff --git a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.BooleanExpression.mdx b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.BooleanExpression.mdx index f9bd2be6cef..d3ad86591d6 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.BooleanExpression.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.BooleanExpression.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression # BooleanExpression - + Bases: `ClassicalElement` The Boolean Expression gate. @@ -120,19 +120,19 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation and handling of the arguments and its relationship. For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example: @@ -185,7 +185,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -195,7 +195,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### control - + Return the controlled version of itself. Implemented either as a controlled gate (ref. [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.ControlledGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). @@ -218,7 +218,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### copy - + Copy of the instruction. **Parameters** @@ -236,7 +236,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### from\_dimacs\_file - + Create a BooleanExpression from the string in the DIMACS format. :param filename: A file in DIMACS format. **Returns** @@ -254,7 +254,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -278,35 +278,34 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### is\_parameterized - + Return whether the `Instruction` contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### power - - Creates a unitary gate as gate^exponent. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. **Parameters** - **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – Gate^exponent + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. **Returns** - To which to\_matrix is self.to\_matrix^exponent. - - **Return type** - - .library.UnitaryGate + An operation implementing `gate^exponent` **Raises** - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If Gate is not unitary + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -330,7 +329,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -348,7 +347,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### simulate - + Evaluate the expression on a bitstring. This evaluation is done classically. @@ -368,7 +367,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -386,7 +385,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### synth - + Synthesis the logic network into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -405,7 +404,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### to\_matrix - + Return a Numpy.array for the gate unitary matrix. **Returns** @@ -423,7 +422,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -431,7 +430,7 @@ python_api_name: qiskit.circuit.classicalfunction.BooleanExpression ### validate\_parameter - + Gate parameters should be int, float, or ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunction.mdx b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunction.mdx index 5771ed20fe6..e308974c454 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction # ClassicalFunction - + Bases: `ClassicalElement` Represent a classical function and its logic network. @@ -171,19 +171,19 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### add\_decomposition - + Add a decomposition of the instruction to the SessionEquivalenceLibrary. ### assemble - + Assemble a QasmQobjInstruction ### broadcast\_arguments - + Validation and handling of the arguments and its relationship. For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example: @@ -236,7 +236,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### c\_if - + Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`. @@ -246,13 +246,13 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### compile - + Parses and creates the logical circuit ### control - + Return the controlled version of itself. Implemented either as a controlled gate (ref. [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.ControlledGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). @@ -275,7 +275,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### copy - + Copy of the instruction. **Parameters** @@ -293,7 +293,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -317,35 +317,34 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### is\_parameterized - + Return whether the `Instruction` contains [compile-time parameters](circuit#circuit-compile-time-parameters). ### power - - Creates a unitary gate as gate^exponent. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. **Parameters** - **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – Gate^exponent + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. **Returns** - To which to\_matrix is self.to\_matrix^exponent. - - **Return type** - - .library.UnitaryGate + An operation implementing `gate^exponent` **Raises** - [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If Gate is not unitary + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary ### repeat - + Creates an instruction with `self` repeated :math\`n\` times. If this operation has a conditional, the output instruction will have the same conditional and the inner repeated operations will be unconditional; instructions within a compound definition cannot be conditioned on registers within Qiskit’s data model. This means that it is not valid to apply a repeated instruction to a clbit that it both writes to and reads from in its condition. @@ -369,7 +368,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### reverse\_ops - + For a composite instruction, reverse the order of sub-instructions. This is done by recursively reversing all sub-instructions. It does not invert any gate. @@ -387,7 +386,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### simulate - + Evaluate the expression on a bitstring. This evaluation is done classically. @@ -407,7 +406,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### simulate\_all - + Returns a truth table. **Returns** @@ -421,7 +420,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### soft\_compare - + Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account. **Parameters** @@ -439,7 +438,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### synth - + Synthesis the logic network into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). **Parameters** @@ -460,7 +459,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### to\_matrix - + Return a Numpy.array for the gate unitary matrix. **Returns** @@ -478,7 +477,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### to\_mutable - + Return a mutable copy of this gate. This method will return a new mutable copy of this gate instance. If a singleton instance is being used this will be a new unique instance that can be mutated. If the instance is already mutable it will be a deepcopy of that instance. @@ -486,7 +485,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunction ### validate\_parameter - + Gate parameters should be int, float, or ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionCompilerTypeError.mdx b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionCompilerTypeError.mdx index 3bcba742d4d..487b154fcb2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionCompilerTypeError.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionCompilerTypeError.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunctionCompilerTypeE # qiskit.circuit.classicalfunction.ClassicalFunctionCompilerTypeError - + ClassicalFunction compiler type error. The classicalfunction function fails at type checking time. Set the error message. diff --git a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionParseError.mdx b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionParseError.mdx index 667ad89c586..f58d97673ab 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionParseError.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.classicalfunction.ClassicalFunctionParseError.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.circuit.classicalfunction.ClassicalFunctionParseError # qiskit.circuit.classicalfunction.ClassicalFunctionParseError - + ClassicalFunction compiler parse error. The classicalfunction function fails at parsing time. Set the error message. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx index b6c0fcec7ee..aede3273d58 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.AND.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.AND # AND - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") A circuit implementing the logical AND operation on a number of qubits. @@ -75,7 +75,7 @@ python_api_name: qiskit.circuit.library.AND ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.C3SXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.C3SXGate.mdx index 6700f7c1055..96f136674ce 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.C3SXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.C3SXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.C3SXGate # C3SXGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") The 3-qubit controlled sqrt-X gate. @@ -24,7 +24,7 @@ python_api_name: qiskit.circuit.library.C3SXGate **Parameters** * **label** – An optional label for the gate \[Default: `None`] - * **ctrl\_state** – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. ## Attributes diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.C3XGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.C3XGate.mdx index 98f059aeb8c..c0f64ab2c82 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.C3XGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.C3XGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.C3XGate # C3XGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") The X gate controlled on 3 qubits. @@ -154,14 +154,14 @@ python_api_name: qiskit.circuit.library.C3XGate ### control - + Controlled version of this gate. **Parameters** * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – number of control qubits. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – An optional label for the gate \[Default: `None`] - * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the controlled gate can be implemented as an annotated gate. **Returns** @@ -175,7 +175,7 @@ python_api_name: qiskit.circuit.library.C3XGate ### inverse - + Invert this gate. The C3X is its own inverse. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.C4XGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.C4XGate.mdx index cc145153a51..88051ce2ea9 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.C4XGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.C4XGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.C4XGate # C4XGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") The 4-qubit controlled X gate. @@ -158,14 +158,14 @@ python_api_name: qiskit.circuit.library.C4XGate ### control - + Controlled version of this gate. **Parameters** * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – number of control qubits. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – An optional label for the gate \[Default: `None`] - * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the controlled gate can be implemented as an annotated gate. **Returns** @@ -179,7 +179,7 @@ python_api_name: qiskit.circuit.library.C4XGate ### inverse - + Invert this gate. The C4X is its own inverse. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CCXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CCXGate.mdx index 220e78f9f05..7efd7ef5b62 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CCXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CCXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CCXGate # CCXGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") CCX gate, also known as Toffoli gate. @@ -210,14 +210,14 @@ $$ ### control - + Controlled version of this gate. **Parameters** * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – number of control qubits. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – An optional label for the gate \[Default: `None`] - * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the controlled gate can be implemented as an annotated gate. **Returns** @@ -231,7 +231,7 @@ $$ ### inverse - + Return an inverted CCX gate (also a CCX). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CCZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CCZGate.mdx index 28fb5fe0dad..e94d86ba677 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CCZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CCZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CCZGate # CCZGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") CCZ gate. @@ -185,7 +185,7 @@ $$ ### inverse - + Return inverted CCZ gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx index 5b9d9558e5e..dca1d3fbf82 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CDKMRippleCarryAdder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CDKMRippleCarryAdder # CDKMRippleCarryAdder - + Bases: `Adder` A ripple-carry circuit to perform in-place addition on two qubit registers. @@ -121,7 +121,7 @@ python_api_name: qiskit.circuit.library.CDKMRippleCarryAdder ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CHGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CHGate.mdx index 098742d21f5..d6b7742eaa5 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CHGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CHGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CHGate # CHGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-Hadamard gate. @@ -200,7 +200,7 @@ $$ ### inverse - + Return inverted CH gate (itself). diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CPhaseGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CPhaseGate.mdx index 6782911d539..0c58e76fee8 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CPhaseGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CPhaseGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CPhaseGate # CPhaseGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-Phase gate. @@ -181,7 +181,7 @@ $$ ### control - + Controlled version of this gate. **Parameters** @@ -202,14 +202,29 @@ $$ ### inverse - + Return inverted CPhase gate ($CPhase(\lambda)^{\dagger} = CPhase(-\lambda)$) ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CRXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CRXGate.mdx index dc3c60db3f8..63ebd967ec0 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CRXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CRXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CRXGate # CRXGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-RX gate. @@ -202,7 +202,7 @@ $$ ### inverse - + Return inverse CRX gate (i.e. with the negative rotation angle). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CRYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CRYGate.mdx index 4e0e296803c..ce05f7dee41 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CRYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CRYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CRYGate # CRYGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-RY gate. @@ -202,7 +202,7 @@ $$ ### inverse - + Return inverse CRY gate (i.e. with the negative rotation angle) **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CRZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CRZGate.mdx index 0ccbe2f7c4c..98475d99cad 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CRZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CRZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CRZGate # CRZGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-RZ gate. @@ -204,7 +204,7 @@ $$ ### inverse - + Return inverse CRZ gate (i.e. with the negative rotation angle). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CSGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CSGate.mdx index 6f8693b8dc0..4b428ff363f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CSGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CSGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CSGate # CSGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-S gate. @@ -176,7 +176,7 @@ $$ ### inverse - + Return inverse of CSGate (CSdgGate). **Parameters** @@ -194,8 +194,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CSXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CSXGate.mdx index 2779016c440..2227111e3ec 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CSXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CSXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CSXGate # CSXGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-√X gate. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CSdgGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CSdgGate.mdx index add08a19c87..7903fa5c29c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CSdgGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CSdgGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CSdgGate # CSdgGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-S^dagger gate. @@ -176,7 +176,7 @@ $$ ### inverse - + Return inverse of CSdgGate (CSGate). **Parameters** @@ -194,8 +194,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CSwapGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CSwapGate.mdx index 40f22b0e6c6..37dc3c38c00 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CSwapGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CSwapGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CSwapGate # CSwapGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-SWAP gate, also known as the Fredkin gate. @@ -219,7 +219,7 @@ $$ ### inverse - + Return inverse CSwap gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CU1Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CU1Gate.mdx index 229e6c399e6..a094fa5aefe 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CU1Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CU1Gate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CU1Gate # CU1Gate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-U1 gate. @@ -179,7 +179,7 @@ $$ ### control - + Controlled version of this gate. **Parameters** @@ -200,7 +200,7 @@ $$ ### inverse - + Return inverted CU1 gate ($CU1(\lambda)^{\dagger} = CU1(-\lambda))$ **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CU3Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CU3Gate.mdx index fa53e5449dd..4c960979767 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CU3Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CU3Gate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CU3Gate # CU3Gate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-U3 gate (3-parameter two-qubit gate). @@ -204,7 +204,7 @@ $$ ### inverse - + Return inverted CU3 gate. $CU3(\theta,\phi,\lambda)^{\dagger} =CU3(-\theta,-\phi,-\lambda))$ diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CUGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CUGate.mdx index a181bee7f6c..06f13ddbd93 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CUGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CUGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CUGate # CUGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Controlled-U gate (4-parameter two-qubit gate). @@ -194,7 +194,7 @@ $$ ### inverse - + Return inverted CU gate. $CU(\theta,\phi,\lambda,\gamma)^{\dagger} = CU(-\theta,-\phi,-\lambda,-\gamma))$ diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CXGate.mdx index b452c921c4a..f10cc2a47b9 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CXGate # CXGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-X gate. @@ -206,14 +206,14 @@ $$ ### control - + Return a controlled-X gate with more control lines. **Parameters** * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – number of control qubits. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – An optional label for the gate \[Default: `None`] - * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the controlled gate can be implemented as an annotated gate. **Returns** @@ -227,7 +227,7 @@ $$ ### inverse - + Return inverted CX gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CYGate.mdx index 4c49eacac58..1b58180e2fb 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CYGate # CYGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-Y gate. @@ -198,7 +198,7 @@ $$ ### inverse - + Return inverted CY gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.CZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.CZGate.mdx index 6253ba02658..58aa9467b29 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.CZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.CZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.CZGate # CZGate - + Bases: [`SingletonControlledGate`](circuit_singleton#qiskit.circuit.singleton.SingletonControlledGate "qiskit.circuit.singleton.SingletonControlledGate") Controlled-Z gate. @@ -179,7 +179,7 @@ $$ ### inverse - + Return inverted CZ gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.DCXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.DCXGate.mdx index 5bab7c0aeba..fe008726351 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.DCXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.DCXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.DCXGate # DCXGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Double-CNOT gate. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx index 8ce45edc651..52e94d432c2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.Diagonal.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.Diagonal # Diagonal - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Diagonal circuit. @@ -103,7 +103,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.DiagonalGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.DiagonalGate.mdx index d59ee0838a1..854ad75f441 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.DiagonalGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.DiagonalGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.DiagonalGate # DiagonalGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Gate implementing a diagonal transformation. @@ -118,13 +118,13 @@ python_api_name: qiskit.circuit.library.DiagonalGate ### inverse - + Return the inverse of the diagonal gate. ### validate\_parameter - + Diagonal Gate parameter should accept complex (in addition to the Gate parameter types) and always return build-in complex. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx index d4fbae510ec..7e617362224 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.DraperQFTAdder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.DraperQFTAdder # DraperQFTAdder - + Bases: `Adder` A circuit that uses QFT to perform in-place addition on two qubit registers. @@ -92,7 +92,7 @@ python_api_name: qiskit.circuit.library.DraperQFTAdder ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ECRGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ECRGate.mdx index 6adf60799ba..766e31cc8ef 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ECRGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ECRGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.ECRGate # ECRGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") An echoed cross-resonance gate. @@ -164,7 +164,7 @@ $$ ### inverse - + Return inverse ECR gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx index 68bdbf74bc7..546b289e533 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.EfficientSU2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.EfficientSU2 # EfficientSU2 - + Bases: [`TwoLocal`](qiskit.circuit.library.TwoLocal "qiskit.circuit.library.n_local.two_local.TwoLocal") The hardware efficient SU(2) 2-local circuit. @@ -66,7 +66,7 @@ python_api_name: qiskit.circuit.library.EfficientSU2 * **num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – The number of qubits of the EfficientSU2 circuit. * **reps** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – Specifies how often the structure of a rotation layer followed by an entanglement layer is repeated. * **su2\_gates** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*type*](https://docs.python.org/3/library/functions.html#type "(in Python v3.12)") *|*[*qiskit.circuit.Instruction*](qiskit.circuit.Instruction "qiskit.circuit.Instruction") *|*[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *|*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*type*](https://docs.python.org/3/library/functions.html#type "(in Python v3.12)") *|*[*qiskit.circuit.Instruction*](qiskit.circuit.Instruction "qiskit.circuit.Instruction") *|*[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*] | None*) – The SU(2) single qubit gates to apply in single qubit gate layers. If only one gate is provided, the same gate is applied to each qubit. If a list of gates is provided, all gates are applied to each qubit in the provided order. - * **entanglement** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]] | Callable\[\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*],* [*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]]*) – Specifies the entanglement structure. Can be a string (‘full’, ‘linear’ , ‘reverse\_linear’, ‘circular’ or ‘sca’), a list of integer-pairs specifying the indices of qubits entangled with one another, or a callable returning such a list provided with the index of the entanglement layer. Default to ‘reverse\_linear’ entanglement. Note that ‘reverse\_linear’ entanglement provides the same unitary as ‘full’ with fewer entangling gates. See the Examples section of [`TwoLocal`](qiskit.circuit.library.TwoLocal "qiskit.circuit.library.TwoLocal") for more detail. + * **entanglement** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]] | Callable\[\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*],* [*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]]*) – Specifies the entanglement structure. Can be a string (‘full’, ‘linear’, ‘reverse\_linear’, ‘pairwise’, ‘circular’, or ‘sca’), a list of integer-pairs specifying the indices of qubits entangled with one another, or a callable returning such a list provided with the index of the entanglement layer. Defaults to ‘reverse\_linear’ entanglement. Note that ‘reverse\_linear’ entanglement provides the same unitary as ‘full’ with fewer entangling gates. See the Examples section of [`TwoLocal`](qiskit.circuit.library.TwoLocal "qiskit.circuit.library.TwoLocal") for more detail. * **initial\_state** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *| None*) – A QuantumCircuit object to prepend to the circuit. * **skip\_unentangled\_qubits** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, the single qubit gates are only applied to qubits that are entangled with another qubit. If False, the single qubit gates are applied to each qubit in the Ansatz. Defaults to False. * **skip\_final\_rotation\_layer** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If False, a rotation layer is added at the end of the ansatz. If True, no rotation layer is added. @@ -154,7 +154,7 @@ python_api_name: qiskit.circuit.library.EfficientSU2 ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx index e2055b94c43..187ce12064e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.EvolvedOperatorAnsatz.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.EvolvedOperatorAnsatz # EvolvedOperatorAnsatz - + Bases: [`NLocal`](qiskit.circuit.library.NLocal "qiskit.circuit.library.n_local.n_local.NLocal") The evolved operator ansatz. @@ -118,7 +118,7 @@ python_api_name: qiskit.circuit.library.EvolvedOperatorAnsatz ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx index ae1f7799932..58f85285327 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ExactReciprocal.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.ExactReciprocal # ExactReciprocal - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Exact reciprocal @@ -72,7 +72,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx index 2ddd9f362b6..e762aabe682 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ExcitationPreserving.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.ExcitationPreserving # ExcitationPreserving - + Bases: [`TwoLocal`](qiskit.circuit.library.TwoLocal "qiskit.circuit.library.n_local.two_local.TwoLocal") The heuristic excitation-preserving wave function ansatz. @@ -173,7 +173,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx index a9745fc2f23..72cb5e29b21 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.FourierChecking.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.FourierChecking # FourierChecking - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Fourier checking circuit. @@ -86,7 +86,7 @@ python_api_name: qiskit.circuit.library.FourierChecking ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx index c68753659b2..4c23f06ebf8 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.FunctionalPauliRotations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.FunctionalPauliRotations # FunctionalPauliRotations - + Bases: `BlueprintCircuit`, [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Base class for functional Pauli rotations. @@ -67,7 +67,7 @@ python_api_name: qiskit.circuit.library.FunctionalPauliRotations ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx index ac213d2c221..bd4fd91125a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GMS.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GMS # GMS - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Global Mølmer–Sørensen gate. @@ -95,7 +95,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx index 036b178d807..a5887cc7bc2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GR.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GR # GR - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Global R gate. @@ -89,7 +89,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx index 76b62d9be83..73d6e4ee493 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GRX.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GRX # GRX - + Bases: [`GR`](qiskit.circuit.library.GR "qiskit.circuit.library.generalized_gates.gr.GR") Global RX gate. @@ -88,7 +88,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx index 00b198d4c81..d2f1e8c5ed9 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GRY.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GRY # GRY - + Bases: [`GR`](qiskit.circuit.library.GR "qiskit.circuit.library.generalized_gates.gr.GR") Global RY gate. @@ -88,7 +88,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx index f645563e20b..985f1d45403 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GRZ.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GRZ # GRZ - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Global RZ gate. @@ -88,7 +88,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx index 6d2387b5090..09e4e2a7b81 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GlobalPhaseGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GlobalPhaseGate # GlobalPhaseGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") The global phase gate ($e^{i\theta}$). @@ -132,7 +132,7 @@ $$ ### inverse - + Return inverse GlobalPhaseGate gate. $\text{GlobalPhaseGate}(\lambda)^{\dagger} = \text{GlobalPhaseGate}(-\lambda)$ diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx index 386e33e5579..df90930f59b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GraphState.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GraphState # GraphState - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Circuit to prepare a graph state. @@ -93,7 +93,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx index 1afee64f39d..f9cd54e6a1a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.GroverOperator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.GroverOperator # GroverOperator - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") The Grover operator. @@ -204,7 +204,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.HGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.HGate.mdx index 3167fd56fa2..72e839fa453 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.HGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.HGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.HGate # HGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Single-qubit Hadamard gate. @@ -138,7 +138,7 @@ $$ ### control - + Return a (multi-)controlled-H gate. One control qubit returns a CH gate. @@ -161,7 +161,7 @@ $$ ### inverse - + Return inverted H gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx index 4e753e22052..392358c8ca8 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.HRSCumulativeMultiplier.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.HRSCumulativeMultiplier # HRSCumulativeMultiplier - + Bases: `Multiplier` A multiplication circuit to store product of two input registers out-of-place. @@ -105,7 +105,7 @@ python_api_name: qiskit.circuit.library.HRSCumulativeMultiplier ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.HamiltonianGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.HamiltonianGate.mdx index c2c2024f8ee..2b8d20a4079 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.HamiltonianGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.HamiltonianGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.HamiltonianGate # HamiltonianGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Class for representing evolution by a Hamiltonian operator as a gate. @@ -126,31 +126,31 @@ python_api_name: qiskit.circuit.library.HamiltonianGate ### adjoint - + Return the adjoint of the unitary. ### conjugate - + Return the conjugate of the Hamiltonian. ### inverse - + Return the adjoint of the unitary. ### transpose - + Return the transpose of the Hamiltonian. ### validate\_parameter - + Hamiltonian parameter has to be an ndarray, operator or float. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx index 4f7822528b4..eb1f8a153f5 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.HiddenLinearFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.HiddenLinearFunction # HiddenLinearFunction - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Circuit to solve the hidden linear function problem. @@ -95,7 +95,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.IGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.IGate.mdx index 143936a36ff..b42ccd1b806 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.IGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.IGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.IGate # IGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Identity gate. @@ -137,7 +137,7 @@ $$ ### inverse - + Returne the inverse gate (itself). **Parameters** @@ -157,8 +157,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx index bd09791c98c..8441e610c0d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.IQP.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.IQP # IQP - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Instantaneous quantum polynomial (IQP) circuit. @@ -83,7 +83,7 @@ python_api_name: qiskit.circuit.library.IQP ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.Initialize.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.Initialize.mdx index 6a8285dbbb5..adcf69ece7c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.Initialize.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.Initialize.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.Initialize # Initialize - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") Complex amplitude initialization. @@ -130,7 +130,7 @@ python_api_name: qiskit.circuit.library.Initialize ### broadcast\_arguments - + Validation of the arguments. **Parameters** @@ -149,7 +149,7 @@ python_api_name: qiskit.circuit.library.Initialize ### gates\_to\_uncompute - + Call to create a circuit with gates that take the desired vector to zero. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx index c03ee555c66..9969ea7f24c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.InnerProduct.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.InnerProduct # InnerProduct - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") A 2n-qubit Boolean function that computes the inner product of two n-qubit vectors over $F_2$. @@ -94,7 +94,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx index b97510c628a..967b01e8519 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.IntegerComparator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.IntegerComparator # IntegerComparator - + Bases: `BlueprintCircuit` Integer Comparator. @@ -74,7 +74,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.Isometry.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.Isometry.mdx index 2292dbe70ce..8c23f22699b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.Isometry.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.Isometry.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.Isometry # Isometry - + Bases: [`Instruction`](qiskit.circuit.Instruction "qiskit.circuit.instruction.Instruction") Decomposition of arbitrary isometries from $m$ to $n$ qubits. @@ -131,13 +131,13 @@ python_api_name: qiskit.circuit.library.Isometry ### inv\_gate - + Return the adjoint of the unitary. ### inverse - + Invert this instruction. If annotated is False, the inverse instruction is implemented as a fresh instruction with the recursively inverted definition. @@ -161,7 +161,7 @@ python_api_name: qiskit.circuit.library.Isometry ### validate\_parameter - + Isometry parameter has to be an ndarray. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx index c9e54a6c33d..aaf5bee8dad 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.LinearAmplitudeFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.LinearAmplitudeFunction # LinearAmplitudeFunction - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") A circuit implementing a (piecewise) linear function on qubit amplitudes. @@ -109,7 +109,7 @@ $$ ### instances - + ### layout @@ -273,7 +273,7 @@ $$ ### post\_processing - + Map the function value of the approximated $\hat{f}$ to $f$. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.LinearFunction.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.LinearFunction.mdx index be9efbd39cf..bd0bdff7235 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.LinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.LinearFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.LinearFunction # LinearFunction - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A linear reversible circuit on n qubits. @@ -167,7 +167,7 @@ $$ ### extend\_with\_identity - + Extend linear function to a linear function over nq qubits, with identities on other subsystems. **Parameters** @@ -186,13 +186,13 @@ $$ ### function\_str - + Return string representation of the linear function viewed as a linear transformation. ### is\_permutation - + Returns whether this linear function is a permutation, that is whether every row and every column of the n x n matrix has exactly one 1. **Return type** @@ -202,19 +202,19 @@ $$ ### mat\_str - + Return string representation of the linear function viewed as a matrix with 0/1 entries. ### permutation\_pattern - + This method first checks if a linear function is a permutation and raises a qiskit.circuit.exceptions.CircuitError if not. In the case that this linear function is a permutation, returns the permutation pattern. ### synthesize - + Synthesizes the linear function into a quantum circuit. **Returns** @@ -228,7 +228,7 @@ $$ ### validate\_parameter - + Parameter validation diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx index da7005415b6..9204441dd37 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.LinearPauliRotations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.LinearPauliRotations # LinearPauliRotations - + Bases: [`FunctionalPauliRotations`](qiskit.circuit.library.FunctionalPauliRotations "qiskit.circuit.library.arithmetic.functional_pauli_rotations.FunctionalPauliRotations") Linearly-controlled X, Y or Z rotation. @@ -90,7 +90,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx index 7aacc4af6bb..9051eca9094 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCMT.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCMT # MCMT - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") The multi-controlled multi-target gate, for an arbitrary singly controlled target gate. @@ -87,7 +87,7 @@ python_api_name: qiskit.circuit.library.MCMT ### instances - + ### layout @@ -257,13 +257,13 @@ python_api_name: qiskit.circuit.library.MCMT ### control - + Return the controlled version of the MCMT circuit. ### inverse - + Return the inverse MCMT circuit, which is itself. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx index 785a4166311..27a8ed5c794 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCMTVChain.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCMTVChain # MCMTVChain - + Bases: [`MCMT`](qiskit.circuit.library.MCMT "qiskit.circuit.library.generalized_gates.mcmt.MCMT") The MCMT implementation using the CCX V-chain. @@ -111,7 +111,7 @@ python_api_name: qiskit.circuit.library.MCMTVChain ### instances - + ### layout @@ -281,7 +281,7 @@ python_api_name: qiskit.circuit.library.MCMTVChain ### inverse - + Return the inverse MCMT circuit, which is itself. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCPhaseGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCPhaseGate.mdx index 7686a507d53..24b5ca64ac3 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCPhaseGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCPhaseGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCPhaseGate # MCPhaseGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") Multi-controlled-Phase gate. @@ -173,7 +173,7 @@ python_api_name: qiskit.circuit.library.MCPhaseGate ### control - + Controlled version of this gate. **Parameters** @@ -194,7 +194,7 @@ python_api_name: qiskit.circuit.library.MCPhaseGate ### inverse - + Return inverted MCPhase gate ($MCPhase(\lambda)^{\dagger} = MCPhase(-\lambda)$) diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXGate.mdx index 478ccb835ec..f711179d86f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCXGate # MCXGate - + Bases: [`ControlledGate`](qiskit.circuit.ControlledGate "qiskit.circuit.controlledgate.ControlledGate") The general, multi-controlled X gate. @@ -160,14 +160,14 @@ python_api_name: qiskit.circuit.library.MCXGate ### control - + Return a multi-controlled-X gate with more control lines. **Parameters** * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – number of control qubits. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – An optional label for the gate \[Default: `None`] - * **ctrl\_state** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the controlled gate can be implemented as an annotated gate. **Returns** @@ -181,7 +181,7 @@ python_api_name: qiskit.circuit.library.MCXGate ### get\_num\_ancilla\_qubits - + Get the number of required ancilla qubits without instantiating the class. This staticmethod might be necessary to check the number of ancillas before creating the gate, or to use the number of ancillas in the initialization. @@ -193,7 +193,7 @@ python_api_name: qiskit.circuit.library.MCXGate ### inverse - + Invert this gate. The MCX is its own inverse. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx index f2c132d47e3..243c24adb93 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXGrayCode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCXGrayCode # MCXGrayCode - + Bases: [`MCXGate`](qiskit.circuit.library.MCXGate "qiskit.circuit.library.standard_gates.x.MCXGate") Implement the multi-controlled X gate using the Gray code. @@ -160,7 +160,7 @@ python_api_name: qiskit.circuit.library.MCXGrayCode ### inverse - + Invert this gate. The MCX is its own inverse. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx index 20f4226e36e..83116e53bea 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXRecursive.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCXRecursive # MCXRecursive - + Bases: [`MCXGate`](qiskit.circuit.library.MCXGate "qiskit.circuit.library.standard_gates.x.MCXGate") Implement the multi-controlled X gate using recursion. @@ -160,13 +160,13 @@ python_api_name: qiskit.circuit.library.MCXRecursive ### get\_num\_ancilla\_qubits - + Get the number of required ancilla qubits. ### inverse - + Invert this gate. The MCX is its own inverse. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx index 0177631380c..76fd3761fef 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MCXVChain.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MCXVChain # MCXVChain - + Bases: [`MCXGate`](qiskit.circuit.library.MCXGate "qiskit.circuit.library.standard_gates.x.MCXGate") Implement the multi-controlled X gate using a V-chain of CX gates. @@ -158,13 +158,13 @@ python_api_name: qiskit.circuit.library.MCXVChain ### get\_num\_ancilla\_qubits - + Get the number of required ancilla qubits. ### inverse - + Invert this gate. The MCX is its own inverse. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.MSGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.MSGate.mdx index 3bd98dba14c..d797ab09c1c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.MSGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.MSGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.MSGate # MSGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") MSGate has been deprecated. Please use `GMS` in `qiskit.circuit.generalized_gates` instead. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx index 678bd534ac9..f6fc36496f8 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.NLocal.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.NLocal # NLocal - + Bases: `BlueprintCircuit` The n-local circuit class. @@ -140,7 +140,7 @@ python_api_name: qiskit.circuit.library.NLocal ### instances - + ### layout @@ -350,7 +350,7 @@ python_api_name: qiskit.circuit.library.NLocal ### add\_layer - + Append another layer to the NLocal. **Parameters** @@ -374,7 +374,7 @@ python_api_name: qiskit.circuit.library.NLocal ### assign\_parameters - + Assign parameters to the n-local circuit. This method also supports passing a list instead of a dictionary. If a list is passed, the list must have the same length as the number of unbound parameters in the circuit. The parameters are assigned in the order of the parameters in [`ordered_parameters()`](#qiskit.circuit.library.NLocal.ordered_parameters "qiskit.circuit.library.NLocal.ordered_parameters"). @@ -394,7 +394,7 @@ python_api_name: qiskit.circuit.library.NLocal ### get\_entangler\_map - + Get the entangler map for in the repetition `rep_num` and the block `block_num`. The entangler map for the current block is derived from the value of `self.entanglement`. Below the different cases are listed, where `i` and `j` denote the repetition number and the block number, respectively, and `n` the number of qubits in the block. @@ -435,7 +435,7 @@ python_api_name: qiskit.circuit.library.NLocal ### get\_unentangled\_qubits - + Get the indices of unentangled qubits in a set. **Returns** @@ -449,7 +449,7 @@ python_api_name: qiskit.circuit.library.NLocal ### print\_settings - + Returns information about the setting. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx index 9da24579a98..39e6ae63024 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.OR.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.OR # OR - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") A circuit implementing the logical OR operation on a number of qubits. @@ -75,7 +75,7 @@ python_api_name: qiskit.circuit.library.OR ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx index 8cfedfbc1d7..161b8694e05 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliEvolutionGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PauliEvolutionGate # PauliEvolutionGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Time-evolution of an operator consisting of Paulis. @@ -179,7 +179,7 @@ $$ ### validate\_parameter - + Gate parameters should be int, float, or ParameterExpression **Return type** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx index 3e1a0f7b6b6..df13b03d098 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliFeatureMap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PauliFeatureMap # PauliFeatureMap - + Bases: [`NLocal`](qiskit.circuit.library.NLocal "qiskit.circuit.library.n_local.n_local.NLocal") The Pauli Expansion circuit. @@ -203,7 +203,7 @@ $$ ### instances - + ### layout @@ -413,13 +413,13 @@ $$ ### pauli\_block - + Get the Pauli block for the feature map circuit. ### pauli\_evolution - + Get the evolution block for the given pauli string. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliGate.mdx index 7c6bcfcc169..7087252b69d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PauliGate # PauliGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A multi-qubit Pauli gate. @@ -129,13 +129,13 @@ python_api_name: qiskit.circuit.library.PauliGate ### inverse - + Return inverted pauli gate (itself). ### validate\_parameter - + Gate parameters should be int, float, or ParameterExpression diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx index ceaf03ab46a..b91bed5f4d2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PauliTwoDesign.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PauliTwoDesign # PauliTwoDesign - + Bases: [`TwoLocal`](qiskit.circuit.library.TwoLocal "qiskit.circuit.library.n_local.two_local.TwoLocal") The Pauli Two-Design ansatz. @@ -138,7 +138,7 @@ python_api_name: qiskit.circuit.library.PauliTwoDesign ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx index 076fbb7d32e..ad74c3846ea 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.Permutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.Permutation # Permutation - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") An n\_qubit circuit that permutes qubits. @@ -77,7 +77,7 @@ python_api_name: qiskit.circuit.library.Permutation ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PermutationGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PermutationGate.mdx index 8e3cc575dbb..01fd689af85 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PermutationGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PermutationGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PermutationGate # PermutationGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A gate that permutes qubits. @@ -138,13 +138,13 @@ python_api_name: qiskit.circuit.library.PermutationGate ### inverse - + Returns the inverse of the permutation. ### validate\_parameter - + Parameter validation. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx index 90ea01a24f5..48c400adc02 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseEstimation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PhaseEstimation # PhaseEstimation - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Phase Estimation circuit. @@ -94,7 +94,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseGate.mdx index b105694649c..897a9cfa32a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PhaseGate # PhaseGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Single-qubit rotation about the Z axis. @@ -162,7 +162,7 @@ $$ ### control - + Return a (multi-)controlled-Phase gate. **Parameters** @@ -183,7 +183,7 @@ $$ ### inverse - + Return inverted Phase gate ($Phase(\lambda)^{\dagger} = Phase(-\lambda)$) **Parameters** @@ -201,8 +201,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx index 942fbc9799b..70dc5aa0fb8 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PhaseOracle.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PhaseOracle # PhaseOracle - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Phase Oracle. @@ -71,7 +71,7 @@ python_api_name: qiskit.circuit.library.PhaseOracle ### instances - + ### layout @@ -235,7 +235,7 @@ python_api_name: qiskit.circuit.library.PhaseOracle ### evaluate\_bitstring - + Evaluate the oracle on a bitstring. This evaluation is done classically without any quantum circuit. **Parameters** @@ -253,7 +253,7 @@ python_api_name: qiskit.circuit.library.PhaseOracle ### from\_dimacs\_file - + Create a PhaseOracle from the string in the DIMACS format. It is possible to build a PhaseOracle from a file in [DIMACS CNF format](http://www.satcompetition.org/2009/format-benchmarks2009.html), which is the standard format for specifying SATisfiability (SAT) problem instances in [Conjunctive Normal Form (CNF)](https://en.wikipedia.org/wiki/Conjunctive_normal_form), which is a conjunction of one or more clauses, where a clause is a disjunction of one or more literals. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx index a1aeace00d3..2c3392563db 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseChebyshev.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev # PiecewiseChebyshev - + Bases: `BlueprintCircuit` Piecewise Chebyshev approximation to an input function. @@ -116,7 +116,7 @@ python_api_name: qiskit.circuit.library.PiecewiseChebyshev ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx index bd1d20b9ae2..e0cd0ad87ea 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewiseLinearPauliRotations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PiecewiseLinearPauliRotations # PiecewiseLinearPauliRotations - + Bases: [`FunctionalPauliRotations`](qiskit.circuit.library.FunctionalPauliRotations "qiskit.circuit.library.arithmetic.functional_pauli_rotations.FunctionalPauliRotations") Piecewise-linearly-controlled Pauli rotations. @@ -99,7 +99,7 @@ $$ ### instances - + ### layout @@ -269,7 +269,7 @@ $$ ### evaluate - + Classically evaluate the piecewise linear rotation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx index ad7c59a9ca0..ed922d8c43b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PiecewisePolynomialPauliRotations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PiecewisePolynomialPauliRotations # PiecewisePolynomialPauliRotations - + Bases: [`FunctionalPauliRotations`](qiskit.circuit.library.FunctionalPauliRotations "qiskit.circuit.library.arithmetic.functional_pauli_rotations.FunctionalPauliRotations") Piecewise-polynomially-controlled Pauli rotations. @@ -157,7 +157,7 @@ $$ ### instances - + ### layout @@ -301,7 +301,7 @@ $$ ### evaluate - + Classically evaluate the piecewise polynomial rotation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx index 98466618450..cc276be8d27 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.PolynomialPauliRotations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.PolynomialPauliRotations # PolynomialPauliRotations - + Bases: [`FunctionalPauliRotations`](qiskit.circuit.library.FunctionalPauliRotations "qiskit.circuit.library.arithmetic.functional_pauli_rotations.FunctionalPauliRotations") A circuit implementing polynomial Pauli rotations. @@ -117,7 +117,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx index 40e661528ec..4d4795999db 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QAOAAnsatz.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz # QAOAAnsatz - + Bases: [`EvolvedOperatorAnsatz`](qiskit.circuit.library.EvolvedOperatorAnsatz "qiskit.circuit.library.n_local.evolved_operator_ansatz.EvolvedOperatorAnsatz") A generalized QAOA quantum circuit with a support of custom initial states and mixers. @@ -132,7 +132,7 @@ python_api_name: qiskit.circuit.library.QAOAAnsatz ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx index 8fe32301ace..851fc5df5fe 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QFT.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.QFT # QFT - + Bases: `BlueprintCircuit` Quantum Fourier Transform Circuit. @@ -110,7 +110,7 @@ $$ ### instances - + ### layout @@ -228,7 +228,7 @@ $$ ### inverse - + Invert this circuit. **Parameters** @@ -246,7 +246,7 @@ $$ ### is\_inverse - + Whether the inverse Fourier transform is implemented. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx index 8d35be89e1e..f100d414c01 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QuadraticForm.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.QuadraticForm # QuadraticForm - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Implements a quadratic form on binary variables encoded in qubit registers. @@ -96,7 +96,7 @@ $$ ### instances - + ### layout @@ -260,7 +260,7 @@ $$ ### required\_result\_qubits - + Get the number of required result qubits. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx index 164388c7b9a..d14981c6f12 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.QuantumVolume.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.QuantumVolume # QuantumVolume - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") A quantum volume model circuit. @@ -37,6 +37,7 @@ python_api_name: qiskit.circuit.library.QuantumVolume * **depth** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – layers of SU(4) operations in model circuit. * **seed** ([*Generator*](https://numpy.org/doc/stable/reference/random/generator.html#numpy.random.Generator "(in NumPy v1.26)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – Random number generator or generator seed. * **classical\_permutation** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – use classical permutations at every layer, rather than quantum. + * **flatten** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If `False` (the default), construct a circuit that contains a single instruction, which in turn has the actual volume structure. If `True`, construct the volume structure directly. ## Attributes @@ -82,7 +83,7 @@ python_api_name: qiskit.circuit.library.QuantumVolume ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RC3XGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RC3XGate.mdx index 1bd9c794905..23d6944756c 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RC3XGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RC3XGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RC3XGate # RC3XGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The simplified 3-controlled Toffoli gate. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RCCXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RCCXGate.mdx index 5959d1880a8..82b25b4fce6 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RCCXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RCCXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RCCXGate # RCCXGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The simplified Toffoli gate, also referred to as Margolus gate. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx index fe060b3fb5a..e30e97a3a1f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RGQFTMultiplier.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RGQFTMultiplier # RGQFTMultiplier - + Bases: `Multiplier` A QFT multiplication circuit to store product of two input registers out-of-place. @@ -84,7 +84,7 @@ python_api_name: qiskit.circuit.library.RGQFTMultiplier ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx index eeb9252169d..d14c920cf6f 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RGate # RGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Rotation θ around the cos(φ)x + sin(φ)y axis. @@ -138,7 +138,7 @@ $$ ### inverse - + Invert this gate as: $r(θ, φ)^dagger = r(-θ, φ)$ **Parameters** @@ -156,8 +156,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RVGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RVGate.mdx index e30370b0d0d..47e391ca163 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RVGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RVGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RVGate # RVGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Rotation around arbitrary rotation axis $\vec{v}$ where $\|\vec{v}\|_2$ is angle of rotation in radians. @@ -150,13 +150,13 @@ $$ ### inverse - + Invert this gate. ### to\_matrix - + Return a numpy.array for the R(v) gate. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RXGate.mdx index 151b3c4254a..976c829fe61 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RXGate # RXGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Single-qubit rotation about the X axis. @@ -138,7 +138,7 @@ $$ ### control - + Return a (multi-)controlled-RX gate. **Parameters** @@ -159,7 +159,7 @@ $$ ### inverse - + Return inverted RX gate. $RX(\lambda)^{\dagger} = RX(-\lambda)$ @@ -179,8 +179,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](#qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](#qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RXXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RXXGate.mdx index 0903a8da570..16abfa10853 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RXXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RXXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RXXGate # RXXGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A parametric 2-qubit $X \otimes X$ interaction (rotation about XX). @@ -164,7 +164,7 @@ $$ ### inverse - + Return inverse RXX gate (i.e. with the negative rotation angle). **Parameters** @@ -182,8 +182,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RYGate.mdx index db34f8252d5..8a0073127c2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RYGate # RYGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Single-qubit rotation about the Y axis. @@ -138,7 +138,7 @@ $$ ### control - + Return a (multi-)controlled-RY gate. **Parameters** @@ -159,7 +159,7 @@ $$ ### inverse - + Return inverse RY gate. $RY(\lambda)^{\dagger} = RY(-\lambda)$ @@ -179,8 +179,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RYYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RYYGate.mdx index 8a3aa6b65b7..e415ce1290b 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RYYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RYYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RYYGate # RYYGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A parametric 2-qubit $Y \otimes Y$ interaction (rotation about YY). @@ -164,7 +164,7 @@ $$ ### inverse - + Return inverse RYY gate (i.e. with the negative rotation angle). **Parameters** @@ -182,8 +182,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RZGate.mdx index 82d2e8f1f0d..8c06207bfd2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RZGate # RZGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Single-qubit rotation about the Z axis. @@ -148,7 +148,7 @@ $$ ### control - + Return a (multi-)controlled-RZ gate. **Parameters** @@ -169,7 +169,7 @@ $$ ### inverse - + Return inverted RZ gate $RZ(\lambda)^{\dagger} = RZ(-\lambda)$ @@ -189,8 +189,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RZXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RZXGate.mdx index 0b1a20fd7ac..c386124caa6 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RZXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RZXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RZXGate # RZXGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A parametric 2-qubit $Z \otimes X$ interaction (rotation about ZX). @@ -204,7 +204,7 @@ $$ ### inverse - + Return inverse RZX gate (i.e. with the negative rotation angle). **Parameters** @@ -222,8 +222,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RZZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RZZGate.mdx index d9393776885..f81c92d136e 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RZZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RZZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RZZGate # RZZGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") A parametric 2-qubit $Z \otimes Z$ interaction (rotation about ZZ). @@ -176,7 +176,7 @@ $$ ### inverse - + Return inverse RZZ gate (i.e. with the negative rotation angle). **Parameters** @@ -194,8 +194,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx index 47c0a9307af..eba87296d5a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.RealAmplitudes.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.RealAmplitudes # RealAmplitudes - + Bases: [`TwoLocal`](qiskit.circuit.library.TwoLocal "qiskit.circuit.library.n_local.two_local.TwoLocal") The real-amplitudes 2-local circuit. @@ -192,7 +192,7 @@ python_api_name: qiskit.circuit.library.RealAmplitudes ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.SGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.SGate.mdx index 9b560152a25..a96b4cdf5e5 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.SGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.SGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.SGate # SGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Single qubit S gate (Z\*\*0.5). @@ -141,7 +141,7 @@ $$ ### inverse - + Return inverse of S (SdgGate). **Parameters** @@ -159,8 +159,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.SXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.SXGate.mdx index 257f41f268a..d84bb7ba54d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.SXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.SXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.SXGate # SXGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The single-qubit Sqrt(X) gate ($\sqrt{X}$). @@ -147,7 +147,7 @@ $$ ### control - + Return a (multi-)controlled-SX gate. One control returns a CSX gate. @@ -170,7 +170,7 @@ $$ ### inverse - + Return inverse SX gate (i.e. SXdg). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.SXdgGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.SXdgGate.mdx index 41d63ccf61b..64a35f4e314 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.SXdgGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.SXdgGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.SXdgGate # SXdgGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The inverse single-qubit Sqrt(X) gate. @@ -137,7 +137,7 @@ $$ ### inverse - + Return inverse SXdg gate (i.e. SX). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.SdgGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.SdgGate.mdx index 012835f258e..0b441432f9d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.SdgGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.SdgGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.SdgGate # SdgGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Single qubit S-adjoint gate (\~Z\*\*0.5). @@ -141,7 +141,7 @@ $$ ### inverse - + Return inverse of Sdg (SGate). **Parameters** @@ -159,8 +159,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.StatePreparation.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.StatePreparation.mdx index e79a3a4558a..b73b47b17a4 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.StatePreparation.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.StatePreparation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.StatePreparation # StatePreparation - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Complex amplitude state preparation. @@ -141,7 +141,7 @@ python_api_name: qiskit.circuit.library.StatePreparation ### broadcast\_arguments - + Validation and handling of the arguments and its relationship. For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example: @@ -190,13 +190,13 @@ python_api_name: qiskit.circuit.library.StatePreparation ### inverse - + Return inverted StatePreparation ### validate\_parameter - + StatePreparation instruction parameter can be str, int, float, and complex. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.SwapGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.SwapGate.mdx index 0bf4566cd9c..5aff995c0b4 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.SwapGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.SwapGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.SwapGate # SwapGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The SWAP gate. @@ -146,7 +146,7 @@ $$ ### control - + Return a (multi-)controlled-SWAP gate. One control returns a CSWAP (Fredkin) gate. @@ -169,7 +169,7 @@ $$ ### inverse - + Return inverse Swap gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.TGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.TGate.mdx index 99725710f7d..df718aa62a1 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.TGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.TGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.TGate # TGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Single qubit T gate (Z\*\*0.25). @@ -141,7 +141,7 @@ $$ ### inverse - + Return inverse T gate (i.e. Tdg). **Parameters** @@ -159,8 +159,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.TdgGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.TdgGate.mdx index b02b8038722..213c72c5b01 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.TdgGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.TdgGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.TdgGate # TdgGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") Single qubit T-adjoint gate (\~Z\*\*0.25). @@ -141,7 +141,7 @@ $$ ### inverse - + Return inverse Tdg gate (i.e. T). **Parameters** @@ -159,8 +159,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx index 520a7136812..9fe75fcf131 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.TwoLocal.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.TwoLocal # TwoLocal - + Bases: [`NLocal`](qiskit.circuit.library.NLocal "qiskit.circuit.library.n_local.n_local.NLocal") The two-local circuit. @@ -204,7 +204,7 @@ python_api_name: qiskit.circuit.library.TwoLocal ### instances - + ### layout @@ -414,7 +414,7 @@ python_api_name: qiskit.circuit.library.TwoLocal ### get\_entangler\_map - + Overloading to handle the special case of 1 qubit where the entanglement are ignored. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.U1Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.U1Gate.mdx index c6b582f4283..3dbdbd66a25 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.U1Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.U1Gate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.U1Gate # U1Gate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Single-qubit rotation about the Z axis. @@ -175,7 +175,7 @@ $$ ### control - + Return a (multi-)controlled-U1 gate. **Parameters** @@ -196,7 +196,7 @@ $$ ### inverse - + Return inverted U1 gate ($U1(\lambda)^{\dagger} = U1(-\lambda))$ **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx index b9d92db4fe6..74d4a0e53a3 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.U2Gate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.U2Gate # U2Gate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Single-qubit rotation about the X+Z axis. @@ -174,7 +174,7 @@ $$ ### inverse - + Return inverted U2 gate. $U2(\phi, \lambda)^{\dagger} =U2(-\lambda-\pi, -\phi+\pi))$ diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.U3Gate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.U3Gate.mdx index a5282b8d375..ad0085c3c01 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.U3Gate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.U3Gate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.U3Gate # U3Gate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Generic single-qubit rotation gate with 3 Euler angles. @@ -169,7 +169,7 @@ $$ ### control - + Return a (multi-)controlled-U3 gate. **Parameters** @@ -190,7 +190,7 @@ $$ ### inverse - + Return inverted U3 gate. $U3(\theta,\phi,\lambda)^{\dagger} =U3(-\theta,-\lambda,-\phi))$ diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UCGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UCGate.mdx index 0a9e224f94c..59163ffc167 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UCGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UCGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UCGate # UCGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Uniformly controlled gate (also called multiplexed gate). @@ -144,7 +144,7 @@ $$ ### inverse - + Return the inverse. This does not re-compute the decomposition for the multiplexer with the inverse of the gates but simply inverts the existing decomposition. @@ -156,7 +156,7 @@ $$ ### validate\_parameter - + Uniformly controlled gate parameter has to be an ndarray. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UCPauliRotGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UCPauliRotGate.mdx index f874be0f9f4..8530fedf0d8 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UCPauliRotGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UCPauliRotGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UCPauliRotGate # UCPauliRotGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Uniformly controlled Pauli rotations. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UCRXGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UCRXGate.mdx index 9057b80fb5b..91bd69215d4 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UCRXGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UCRXGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UCRXGate # UCRXGate - + Bases: [`UCPauliRotGate`](qiskit.circuit.library.UCPauliRotGate "qiskit.circuit.library.generalized_gates.uc_pauli_rot.UCPauliRotGate") Uniformly controlled Pauli-X rotations. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UCRYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UCRYGate.mdx index c5d93f5b9b6..482995e6fc1 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UCRYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UCRYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UCRYGate # UCRYGate - + Bases: [`UCPauliRotGate`](qiskit.circuit.library.UCPauliRotGate "qiskit.circuit.library.generalized_gates.uc_pauli_rot.UCPauliRotGate") Uniformly controlled Pauli-Y rotations. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UCRZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UCRZGate.mdx index 8afe6e98efd..f0ffa7c33a7 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UCRZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UCRZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UCRZGate # UCRZGate - + Bases: [`UCPauliRotGate`](qiskit.circuit.library.UCPauliRotGate "qiskit.circuit.library.generalized_gates.uc_pauli_rot.UCPauliRotGate") Uniformly controlled Pauli-Z rotations. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UGate.mdx index 65adac14c03..ae85b96c653 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UGate # UGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Generic single-qubit rotation gate with 3 Euler angles. @@ -152,7 +152,7 @@ $$ ### control - + Return a (multi-)controlled-U gate. **Parameters** @@ -173,7 +173,7 @@ $$ ### inverse - + Return inverted U gate. $U(\theta,\phi,\lambda)^{\dagger} =U(-\theta,-\lambda,-\phi))$ diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryGate.mdx index 5a9a3bfc326..1d017a9b0d2 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UnitaryGate # UnitaryGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") Class quantum gates specified by a unitary matrix. @@ -38,6 +38,7 @@ python_api_name: qiskit.circuit.library.UnitaryGate * **data** ([*numpy.ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v1.26)") *|*[*Gate*](qiskit.circuit.Gate "qiskit.circuit.Gate") *| BaseOperator*) – Unitary operator. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – Unitary name for backend \[Default: `None`]. * **check\_input** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If set to `False` this asserts the input is known to be unitary and the checking to validate this will be skipped. This should only ever be used if you know the input is unitary, setting this to `False` and passing in a non-unitary matrix will result unexpected behavior and errors. + * **num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – If given, the number of qubits in the matrix. If not given, it is inferred. **Raises** @@ -144,19 +145,19 @@ python_api_name: qiskit.circuit.library.UnitaryGate ### adjoint - + Return the adjoint of the unitary. ### conjugate - + Return the conjugate of the unitary. ### control - + Return controlled version of gate. **Parameters** @@ -177,19 +178,19 @@ python_api_name: qiskit.circuit.library.UnitaryGate ### inverse - + Return the adjoint of the unitary. ### transpose - + Return the transpose of the unitary. ### validate\_parameter - + Unitary gate parameter has to be an ndarray. diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx index a240484b7e3..964bae92ae4 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.UnitaryOverlap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.UnitaryOverlap # UnitaryOverlap - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") Circuit that returns the overlap between two unitaries $U_2^{\dag} U_1$. @@ -17,11 +17,9 @@ python_api_name: qiskit.circuit.library.UnitaryOverlap This circuit is usually employed in computing the fidelity: - ```python - .. math:: - - \left|\langle 0| U_2^{\dag} U_1|0\rangle\right|^{2} - ``` +$$ +\left|\langle 0| U_2^{\dag} U_1|0\rangle\right|^{2} +$$ by computing the probability of being in the all-zeros bit-string, or equivalently, the expectation value of projector $|0\rangle\langle 0|$. @@ -104,7 +102,7 @@ python_api_name: qiskit.circuit.library.UnitaryOverlap ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx index 5bbdbb89891..18a64ec6b49 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.VBERippleCarryAdder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.VBERippleCarryAdder # VBERippleCarryAdder - + Bases: `Adder` The VBE ripple carry adder \[1]. @@ -93,7 +93,7 @@ python_api_name: qiskit.circuit.library.VBERippleCarryAdder ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx index 71747d60937..4d78e4603b4 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.WeightedAdder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.WeightedAdder # WeightedAdder - + Bases: `BlueprintCircuit` A circuit to compute the weighted sum of qubit registers. @@ -96,7 +96,7 @@ $$ ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.XGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.XGate.mdx index f84d37818da..9c609417592 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.XGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.XGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.XGate # XGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The single-qubit Pauli-X gate ($\sigma_x$). @@ -156,7 +156,7 @@ $$ ### control - + Return a (multi-)controlled-X gate. One control returns a CX gate. Two controls returns a CCX gate. @@ -165,7 +165,7 @@ $$ * **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – number of control qubits. * **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – An optional label for the gate \[Default: `None`] - * **ctrl\_state** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g.\`\`’110’`), or ``None`. If `None`, use all 1s. + * **ctrl\_state** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – control state expressed as integer, string (e.g. `'110'`), or `None`. If `None`, use all 1s. * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the controlled gate can be implemented as an annotated gate. **Returns** @@ -179,7 +179,7 @@ $$ ### inverse - + Return inverted X gate (itself). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx index 302a4add121..e9e3ce17a6d 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.XOR.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.XOR # XOR - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") An n\_qubit circuit for bitwise xor-ing the input with some integer `amount`. @@ -77,7 +77,7 @@ python_api_name: qiskit.circuit.library.XOR ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.XXMinusYYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.XXMinusYYGate.mdx index ecdda428efc..d41fa55d4c6 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.XXMinusYYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.XXMinusYYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.XXMinusYYGate # XXMinusYYGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") XX-YY interaction gate. @@ -174,7 +174,7 @@ $$ ### inverse - + Inverse gate. **Parameters** @@ -192,8 +192,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.XXPlusYYGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.XXPlusYYGate.mdx index 383af107fcd..a9d76093e6a 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.XXPlusYYGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.XXPlusYYGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.XXPlusYYGate # XXPlusYYGate - + Bases: [`Gate`](qiskit.circuit.Gate "qiskit.circuit.gate.Gate") XX+YY interaction gate. @@ -174,7 +174,7 @@ $$ ### inverse - + Return inverse XX+YY gate (i.e. with the negative rotation angle and same phase angle). **Parameters** @@ -192,8 +192,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.YGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.YGate.mdx index 9a5033bebc8..bc5af458ce5 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.YGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.YGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.YGate # YGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The single-qubit Pauli-Y gate ($\sigma_y$). @@ -156,7 +156,7 @@ $$ ### control - + Return a (multi-)controlled-Y gate. One control returns a CY gate. @@ -179,7 +179,7 @@ $$ ### inverse - + Return inverted Y gate ($Y^{\dagger} = Y$) **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx index 98401ccc33a..f82eafff884 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ZFeatureMap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.ZFeatureMap # ZFeatureMap - + Bases: [`PauliFeatureMap`](qiskit.circuit.library.PauliFeatureMap "qiskit.circuit.library.data_preparation.pauli_feature_map.PauliFeatureMap") The first order Pauli Z-evolution circuit. @@ -170,7 +170,7 @@ python_api_name: qiskit.circuit.library.ZFeatureMap ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ZGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ZGate.mdx index bffc0f20675..d92409290eb 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ZGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ZGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.ZGate # ZGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") The single-qubit Pauli-Z gate ($\sigma_z$). @@ -156,7 +156,7 @@ $$ ### control - + Return a (multi-)controlled-Z gate. One control returns a CZ gate. @@ -179,7 +179,7 @@ $$ ### inverse - + Return inverted Z gate (itself). **Parameters** @@ -197,8 +197,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx index e5a7e2ad5f5..26b397982fc 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.ZZFeatureMap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.ZZFeatureMap # ZZFeatureMap - + Bases: [`PauliFeatureMap`](qiskit.circuit.library.PauliFeatureMap "qiskit.circuit.library.data_preparation.pauli_feature_map.PauliFeatureMap") Second-order Pauli-Z evolution circuit. @@ -175,7 +175,7 @@ python_api_name: qiskit.circuit.library.ZZFeatureMap ### instances - + ### layout diff --git a/docs/api/qiskit/dev/qiskit.circuit.library.iSwapGate.mdx b/docs/api/qiskit/dev/qiskit.circuit.library.iSwapGate.mdx index 49a3d7797b7..fb34064ade3 100644 --- a/docs/api/qiskit/dev/qiskit.circuit.library.iSwapGate.mdx +++ b/docs/api/qiskit/dev/qiskit.circuit.library.iSwapGate.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.circuit.library.iSwapGate # iSwapGate - + Bases: [`SingletonGate`](circuit_singleton#qiskit.circuit.singleton.SingletonGate "qiskit.circuit.singleton.SingletonGate") iSWAP gate. @@ -169,8 +169,23 @@ $$ ### power - - Raise gate to a power. + + Raise this gate to the power of `exponent`. + + Implemented either as a unitary gate (ref. [`UnitaryGate`](qiskit.circuit.library.UnitaryGate "qiskit.circuit.library.UnitaryGate")) or as an annotated operation (ref. [`AnnotatedOperation`](qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation")). In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), when the power of a gate can be expressed in terms of another standard gate that is returned directly. + + **Parameters** + + * **exponent** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – the power to raise the gate to + * **annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – indicates whether the power gate can be implemented as an annotated operation. In the case of several standard gates, such as [`RXGate`](qiskit.circuit.library.RXGate "qiskit.circuit.library.RXGate"), this argument is ignored when the power of a gate can be expressed in terms of another standard gate. + + **Returns** + + An operation implementing `gate^exponent` + + **Raises** + + [**CircuitError**](circuit#qiskit.circuit.CircuitError "qiskit.circuit.CircuitError") – If gate is not unitary diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGCircuit.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGCircuit.mdx index 6527f2ca324..76e1e844d15 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGCircuit.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit # DAGCircuit - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Quantum circuit as a directed acyclic graph. @@ -41,6 +41,30 @@ python_api_name: qiskit.dagcircuit.DAGCircuit Returns the number of nodes in the dag. + ### num\_captured\_vars + + + Number of captured classical variables tracked by the circuit. + + + ### num\_declared\_vars + + + Number of declared local classical variables tracked by the circuit. + + + ### num\_input\_vars + + + Number of input classical variables tracked by the circuit. + + + ### num\_vars + + + Total number of classical variables tracked by the circuit. + + ### wires @@ -51,7 +75,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### add\_calibration - + Register a low-level, custom pulse definition for the given gate. **Parameters** @@ -66,39 +90,69 @@ python_api_name: qiskit.dagcircuit.DAGCircuit [**Exception**](https://docs.python.org/3/library/exceptions.html#Exception "(in Python v3.12)") – if the gate is of type string and params is None. + ### add\_captured\_var + + + Add a captured variable to the circuit. + + **Parameters** + + **var** ([*Var*](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.expr.Var")) – the variable to add. + + ### add\_clbits - + Add individual clbit wires. ### add\_creg - + Add all wires in a classical register. + ### add\_declared\_var + + + Add a declared local variable to the circuit. + + **Parameters** + + **var** ([*Var*](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.expr.Var")) – the variable to add. + + + ### add\_input\_var + + + Add an input variable to the circuit. + + **Parameters** + + **var** ([*Var*](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.expr.Var")) – the variable to add. + + ### add\_qreg - + Add all wires in a quantum register. ### add\_qubits - + Add individual qubit wires. ### ancestors - + Returns set of the ancestors of a node as DAGOpNodes and DAGInNodes. ### apply\_operation\_back - + Apply an operation to the output of the circuit. **Parameters** @@ -123,7 +177,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### apply\_operation\_front - + Apply an operation to the input of the circuit. **Parameters** @@ -148,25 +202,25 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### bfs\_successors - + Returns an iterator of tuples of (DAGNode, \[DAGNodes]) where the DAGNode is the current node and \[DAGNode] is its successors in BFS order. ### classical\_predecessors - + Returns iterator of the predecessors of a node that are connected by a classical edge as DAGOpNodes and DAGInNodes. ### classical\_successors - + Returns iterator of the successors of a node that are connected by a classical edge as DAGOpNodes and DAGInNodes. ### collect\_1q\_runs - + Return a set of non-conditional runs of 1q “op” nodes. **Return type** @@ -176,13 +230,13 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### collect\_2q\_runs - + Return a set of non-conditional runs of 2q “op” nodes. ### collect\_runs - + Return a set of non-conditional runs of “op” nodes with the given names. For example, “… h q\[0]; cx q\[0],q\[1]; cx q\[0],q\[1]; h q\[1]; ..” would produce the tuple of cx nodes as an element of the set returned from a call to collect\_runs(\[“cx”]). If instead the cx nodes were “cx q\[0],q\[1]; cx q\[1],q\[0];”, the method would still return the pair in a tuple. The namelist can contain names that are not in the circuit’s basis. @@ -192,7 +246,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### compose - + Compose the `other` circuit onto the output of this circuit. A subset of input wires of `other` are mapped to a subset of output wires of this circuit. @@ -206,6 +260,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit * **clbits** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Clbit*](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit")*|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – clbits of self to compose onto. * **front** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, front composition will be performed (not implemented yet) * **inplace** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If True, modify the object. Otherwise return composed circuit. + * **inline\_captures** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If `True`, variables marked as “captures” in the `other` DAG will inlined onto existing uses of those same variables in `self`. If `False`, all variables in `other` are required to be distinct from `self`, and they will be added to `self`. **Returns** @@ -222,7 +277,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### copy\_empty\_like - + Return a copy of self with the same structure but empty. **That structure includes:** @@ -230,7 +285,26 @@ python_api_name: qiskit.dagcircuit.DAGCircuit * name and other metadata * global phase * duration - * all the qubits and clbits, including the registers. + * all the qubits and clbits, including the registers + * all the classical variables, with a mode defined by `vars_mode`. + + **Parameters** + + **vars\_mode** ([*Literal*](https://docs.python.org/3/library/typing.html#typing.Literal "(in Python v3.12)")*\['alike', 'captures', 'drop']*) – + + The mode to handle realtime variables in. + + **alike** + + The variables in the output DAG will have the same declaration semantics as in the original circuit. For example, `input` variables in the source will be `input` variables in the output DAG. + + **captures** + + All variables will be converted to captured variables. This is useful when you are building a new layer for an existing DAG that you will want to [`compose()`](#qiskit.dagcircuit.DAGCircuit.compose "qiskit.dagcircuit.DAGCircuit.compose") onto the base, since [`compose()`](#qiskit.dagcircuit.DAGCircuit.compose "qiskit.dagcircuit.DAGCircuit.compose") can inline captures onto the base circuit (but not other variables). + + **drop** + + The output DAG will have no variables defined. **Returns** @@ -243,7 +317,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### count\_ops - + Count the occurrences of operation names. **Parameters** @@ -261,7 +335,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### count\_ops\_longest\_path - + Count the occurrences of operation names on the longest path. Returns a dictionary of counts keyed on the operation name. @@ -269,7 +343,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### depth - + Return the circuit depth. If there is control flow present, this count may only be an estimate, as the complete control-flow path cannot be statically known. **Parameters** @@ -292,13 +366,13 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### descendants - + Returns set of the descendants of a node as DAGOpNodes and DAGOutNodes. ### draw - + Draws the dag circuit. This function needs [Graphviz](https://www.graphviz.org/) to be installed. Graphviz is not a python package and can’t be pip installed (the `graphviz` package on PyPI is a Python interface library for Graphviz and does not actually install Graphviz). You can refer to [the Graphviz documentation](https://www.graphviz.org/download/) on how to install it. @@ -320,7 +394,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### edges - + Iterator for edge values and source and dest node This works by returning the output edges from the specified nodes. If no nodes are specified all edges from the graph are returned. @@ -340,7 +414,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### find\_bit - + Finds locations in the circuit, by mapping the Qubit and Clbit to positional index BitLocations is defined as: BitLocations = namedtuple(“BitLocations”, (“index”, “registers”)) **Parameters** @@ -364,13 +438,13 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### front\_layer - + Return a list of op nodes in the first layer of this dag. ### gate\_nodes - + Get the list of gate nodes in the dag. **Returns** @@ -384,13 +458,27 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### has\_calibration\_for - + Return True if the dag has a calibration defined for the node operation. In this case, the operation does not need to be translated to the device basis. + ### has\_var + + + Is this realtime variable in the DAG? + + **Parameters** + + **var** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*expr.Var*](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var")) – the variable or name to check. + + **Return type** + + [bool](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") + + ### idle\_wires - + Return idle wires. **Parameters** @@ -408,19 +496,43 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### is\_predecessor - + Checks if a second node is in the predecessors of node. ### is\_successor - + Checks if a second node is in the successors of node. + ### iter\_captured\_vars + + + Iterable over the captured classical variables tracked by the circuit. + + + ### iter\_declared\_vars + + + Iterable over the declared local classical variables tracked by the circuit. + + + ### iter\_input\_vars + + + Iterable over the input classical variables tracked by the circuit. + + + ### iter\_vars + + + Iterable over all the classical variables tracked by the circuit. + + ### layers - + Yield a shallow view on a layer of this DAGCircuit for all d layers of this circuit. A layer is a circuit whose gates act on disjoint qubits, i.e., a layer has depth 1. The total number of layers equals the circuit depth d. The layers are indexed from 0 to d-1 with the earliest layer at index 0. The layers are constructed using a greedy algorithm. Each returned layer is a dict containing \{“graph”: circuit graph, “partition”: list of qubit lists}. @@ -428,35 +540,39 @@ python_api_name: qiskit.dagcircuit.DAGCircuit The returned layer contains new (but semantically equivalent) DAGOpNodes, DAGInNodes, and DAGOutNodes. These are not the same as nodes of the original dag, but are equivalent via DAGNode.semantic\_eq(node1, node2). TODO: Gates that use the same cbits will end up in different layers as this is currently implemented. This may not be the desired behavior. + + **Parameters** + + **vars\_mode** ([*Literal*](https://docs.python.org/3/library/typing.html#typing.Literal "(in Python v3.12)")*\['alike', 'captures', 'drop']*) – how any realtime [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") nodes should be handled in the output DAGs. See [`copy_empty_like()`](#qiskit.dagcircuit.DAGCircuit.copy_empty_like "qiskit.dagcircuit.DAGCircuit.copy_empty_like") for details on the modes. ### longest\_path - + Returns the longest path in the dag as a list of DAGOpNodes, DAGInNodes, and DAGOutNodes. ### multi\_qubit\_ops - + Get list of 3+ qubit operations. Ignore directives like snapshot and barrier. ### multigraph\_layers - + Yield layers of the multigraph. ### named\_nodes - + Get the set of “op” nodes with the given name. ### node - + Get the node in the dag. **Parameters** @@ -474,7 +590,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### nodes - + Iterator for node values. **Yields** @@ -484,7 +600,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### nodes\_on\_wire - + Iterator for nodes that affect a given wire. **Parameters** @@ -503,25 +619,25 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### num\_clbits - + Return the total number of classical bits used by the circuit. ### num\_qubits - + Return the total number of qubits used by the circuit. num\_qubits() replaces former use of width(). DAGCircuit.width() now returns qubits + clbits for consistency with Circuit.width() \[qiskit-terra #2564]. ### num\_tensor\_factors - + Compute how many components the circuit can decompose into. ### op\_nodes - + Get the list of “op” nodes in the dag. **Parameters** @@ -538,21 +654,33 @@ python_api_name: qiskit.dagcircuit.DAGCircuit [list](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")\[[DAGOpNode](qiskit.dagcircuit.DAGOpNode "qiskit.dagcircuit.DAGOpNode")] + ### op\_predecessors + + + Returns the iterator of “op” predecessors of a node in the dag. + + + ### op\_successors + + + Returns iterator of “op” successors of a node in the dag. + + ### predecessors - + Returns iterator of the predecessors of a node as DAGOpNodes and DAGInNodes. ### properties - + Return a dictionary of circuit properties. ### quantum\_causal\_cone - + Returns causal cone of a qubit. A qubit’s causal cone is the set of qubits that can influence the output of that qubit through interactions, whether through multi-qubit gates or operations. Knowing the causal cone of a qubit can be useful when debugging faulty circuits, as it can help identify which wire(s) may be causing the problem. @@ -574,31 +702,31 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### quantum\_predecessors - + Returns iterator of the predecessors of a node that are connected by a quantum edge as DAGOpNodes and DAGInNodes. ### quantum\_successors - + Returns iterator of the successors of a node that are connected by a quantum edge as Opnodes and DAGOutNodes. ### remove\_all\_ops\_named - + Remove all operation nodes with the given name. ### remove\_ancestors\_of - + Remove all of the ancestor operation nodes of node. ### remove\_clbits - + Remove classical bits from the circuit. All bits MUST be idle. Any registers with references to at least one of the specified bits will also be removed. **Parameters** @@ -612,7 +740,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### remove\_cregs - + Remove classical registers from the circuit, leaving underlying bits in place. **Raises** @@ -623,25 +751,25 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### remove\_descendants\_of - + Remove all of the descendant operation nodes of node. ### remove\_nonancestors\_of - + Remove all of the non-ancestors operation nodes of node. ### remove\_nondescendants\_of - + Remove all of the non-descendants operation nodes of node. ### remove\_op\_node - + Remove an operation node n. Add edges from predecessors to successors. @@ -649,7 +777,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### remove\_qregs - + Remove classical registers from the circuit, leaving underlying bits in place. **Raises** @@ -660,7 +788,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### remove\_qubits - + Remove quantum bits from the circuit. All bits MUST be idle. Any registers with references to at least one of the specified bits will also be removed. **Parameters** @@ -674,7 +802,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### replace\_block\_with\_op - + Replace a block of nodes with a single node. This is used to consolidate a block of DAGOpNodes into a single operation. A typical example is a block of gates being consolidated into a single `UnitaryGate` representing the unitary matrix of the block. @@ -683,7 +811,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit * **node\_block** (*List\[*[*DAGNode*](qiskit.dagcircuit.DAGNode "qiskit.dagcircuit.DAGNode")*]*) – A list of dag nodes that represents the node block to be replaced * **op** ([*qiskit.circuit.Operation*](qiskit.circuit.Operation "qiskit.circuit.Operation")) – The operation to replace the block with - * **wire\_pos\_map** (*Dict\[*[*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – The dictionary mapping the bits to their positions in the output `qargs` or `cargs`. This is necessary to reconstruct the arg order over multiple gates in the combined single op node. If a [`Bit`](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit") is not in the dictionary, it will not be added to the args; this can be useful when dealing with control-flow operations that have inherent bits in their `condition` or `target` fields. + * **wire\_pos\_map** (*Dict\[*[*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – The dictionary mapping the bits to their positions in the output `qargs` or `cargs`. This is necessary to reconstruct the arg order over multiple gates in the combined single op node. If a [`Bit`](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit") is not in the dictionary, it will not be added to the args; this can be useful when dealing with control-flow operations that have inherent bits in their `condition` or `target` fields. [`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") wires similarly do not need to be in this map, since they will never be in `qargs` or `cargs`. * **cycle\_check** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – When set to True this method will check that replacing the provided `node_block` with a single node would introduce a cycle (which would invalidate the `DAGCircuit`) and will raise a `DAGCircuitError` if a cycle would be introduced. This checking comes with a run time penalty. If you can guarantee that your input `node_block` is a contiguous block and won’t introduce a cycle when it’s contracted to a single node, this can be set to `False` to improve the runtime performance of this method. **Raises** @@ -701,7 +829,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### reverse\_ops - + Reverse the operations in the `self` circuit. **Returns** @@ -715,12 +843,13 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### separable\_circuits - + Decompose the circuit into sets of qubits with no gates connecting them. **Parameters** - **remove\_idle\_qubits** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Flag denoting whether to remove idle qubits from the separated circuits. If `False`, each output circuit will contain the same number of qubits as `self`. + * **remove\_idle\_qubits** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Flag denoting whether to remove idle qubits from the separated circuits. If `False`, each output circuit will contain the same number of qubits as `self`. + * **vars\_mode** ([*Literal*](https://docs.python.org/3/library/typing.html#typing.Literal "(in Python v3.12)")*\['alike', 'captures', 'drop']*) – how any realtime [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") nodes should be handled in the output DAGs. See [`copy_empty_like()`](#qiskit.dagcircuit.DAGCircuit.copy_empty_like "qiskit.dagcircuit.DAGCircuit.copy_empty_like") for details on the modes. **Returns** @@ -737,15 +866,19 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### serial\_layers - + Yield a layer for all gates of this circuit. A serial layer is a circuit with one gate. The layers have the same structure as in layers(). + + **Parameters** + + **vars\_mode** ([*Literal*](https://docs.python.org/3/library/typing.html#typing.Literal "(in Python v3.12)")*\['alike', 'captures', 'drop']*) – how any realtime [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") nodes should be handled in the output DAGs. See [`copy_empty_like()`](#qiskit.dagcircuit.DAGCircuit.copy_empty_like "qiskit.dagcircuit.DAGCircuit.copy_empty_like") for details on the modes. ### size - + Return the number of operations. If there is control flow present, this count may only be an estimate, as the complete control-flow path cannot be statically known. **Parameters** @@ -767,7 +900,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### substitute\_node - + Replace an DAGOpNode with a single operation. qargs, cargs and conditions for the new operation will be inferred from the node to be replaced. The new operation will be checked to match the shape of the replaced operation. **Parameters** @@ -793,14 +926,21 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### substitute\_node\_with\_dag - + Replace one node with dag. **Parameters** * **node** ([*DAGOpNode*](qiskit.dagcircuit.DAGOpNode "qiskit.dagcircuit.DAGOpNode")) – node to substitute - * **input\_dag** ([*DAGCircuit*](#qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – circuit that will substitute the node - * **wires** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*] | Dict\[*[*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*,* [*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*]*) – gives an order for (qu)bits in the input circuit. If a list, then the bits refer to those in the `input_dag`, and the order gets matched to the node wires by qargs first, then cargs, then conditions. If a dictionary, then a mapping of bits in the `input_dag` to those that the `node` acts on. + + * **input\_dag** ([*DAGCircuit*](#qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – circuit that will substitute the node. + + * **wires** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*] | Dict\[*[*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*,* [*Bit*](circuit#qiskit.circuit.Bit "qiskit.circuit.Bit")*]*) – + + gives an order for (qu)bits in the input circuit. If a list, then the bits refer to those in the `input_dag`, and the order gets matched to the node wires by qargs first, then cargs, then conditions. If a dictionary, then a mapping of bits in the `input_dag` to those that the `node` acts on. + + Standalone [`Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") nodes cannot currently be remapped as part of the substitution; the `input_dag` should be defined over the correct set of variables already. + * **propagate\_condition** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If `True` (default), then any `condition` attribute on the operation within `node` is propagated to each node in the `input_dag`. If `False`, then the `input_dag` is assumed to faithfully implement suitable conditional logic already. This is ignored for [`ControlFlowOp`](qiskit.circuit.ControlFlowOp "qiskit.circuit.ControlFlowOp")s (i.e. treated as if it is `False`); replacements of those must already fulfill the same conditional logic or this function would be close to useless for them. **Returns** @@ -818,13 +958,13 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### successors - + Returns iterator of the successors of a node as DAGOpNodes and DAGOutNodes. ### swap\_nodes - + Swap connected nodes e.g. due to commutation. **Parameters** @@ -839,7 +979,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### topological\_nodes - + Yield nodes in topological order. **Parameters** @@ -857,7 +997,7 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### topological\_op\_nodes - + Yield op nodes in topological order. Allowed to pass in specific key to break ties in top order @@ -877,13 +1017,13 @@ python_api_name: qiskit.dagcircuit.DAGCircuit ### two\_qubit\_ops - + Get list of 2 qubit operations. Ignore directives like snapshot and barrier. ### width - + Return the total number of qubits + clbits used by the circuit. This function formerly returned the number of qubits by the calculation return len(self.\_wires) - self.num\_clbits() but was changed by issue #2564 to return number of qubits + clbits with the new function DAGCircuit.num\_qubits replacing the former semantic of DAGCircuit.width(). diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDepNode.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDepNode.mdx index 04d790e9f3b..e6f7eba7d4a 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDepNode.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDepNode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGDepNode # DAGDepNode - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Object to represent the information at a node in the DAGDependency(). @@ -85,13 +85,13 @@ python_api_name: qiskit.dagcircuit.DAGDepNode ### copy - + Function to copy a DAGDepNode object. :returns: a copy of a DAGDepNode object. :rtype: DAGDepNode ### semantic\_eq - + Check if DAG nodes are considered equivalent, e.g., as a node\_match for nx.is\_isomorphic. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDependency.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDependency.mdx index 3f63f48aab6..98051196c85 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDependency.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGDependency.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency # DAGDependency - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Object to represent a quantum circuit as a Directed Acyclic Graph (DAG) via operation dependencies (i.e. lack of commutation). @@ -57,19 +57,19 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### add\_clbits - + Add individual clbit wires. ### add\_creg - + Add clbits in a classical register. ### add\_op\_node - + Add a DAGDepNode to the graph and update the edges. **Parameters** @@ -81,31 +81,31 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### add\_qreg - + Add qubits in a quantum register. ### add\_qubits - + Add individual qubit wires. ### copy - + Function to copy a DAGDependency object. :returns: a copy of a DAGDependency object. :rtype: DAGDependency ### depth - + Return the circuit depth. :returns: the circuit depth :rtype: int ### direct\_predecessors - + Direct predecessors id of a given node as sorted list. **Parameters** @@ -123,7 +123,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### direct\_successors - + Direct successors id of a given node as sorted list. **Parameters** @@ -141,7 +141,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### draw - + Draws the DAGDependency graph. This function needs pydot \<[https://github.com/erocarrera/pydot](https://github.com/erocarrera/pydot)>, which in turn needs Graphviz \<[https://www.graphviz.org/](https://www.graphviz.org/)>\` to be installed. @@ -163,7 +163,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### get\_all\_edges - + Enumeration of all edges. **Returns** @@ -177,7 +177,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### get\_edges - + Edge enumeration between two nodes through method get\_all\_edge\_data. **Parameters** @@ -196,7 +196,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### get\_in\_edges - + Enumeration of all incoming edges for a given node. **Parameters** @@ -214,7 +214,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### get\_node - + **Parameters** **node\_id** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – label of considered node. @@ -230,7 +230,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### get\_nodes - + **Returns** iterator over all the nodes. @@ -242,7 +242,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### get\_out\_edges - + Enumeration of all outgoing edges for a given node. **Parameters** @@ -260,7 +260,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### predecessors - + Predecessors id of a given node as sorted list. **Parameters** @@ -278,7 +278,7 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### replace\_block\_with\_op - + Replace a block of nodes with a single node. This is used to consolidate a block of DAGDepNodes into a single operation. A typical example is a block of CX and SWAP gates consolidated into a LinearFunction. This function is an adaptation of a similar function from DAGCircuit. @@ -299,13 +299,13 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### size - + Returns the number of gates in the circuit ### successors - + Successors id of a given node as sorted list. **Parameters** @@ -323,13 +323,13 @@ python_api_name: qiskit.dagcircuit.DAGDependency ### to\_retworkx - + Returns the DAGDependency in retworkx format. ### topological\_nodes - + Yield nodes in topological order. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGInNode.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGInNode.mdx index 04638944b0b..3bcfbb12494 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGInNode.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGInNode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGInNode # DAGInNode - + Bases: [`DAGNode`](qiskit.dagcircuit.DAGNode "qiskit.dagcircuit.dagnode.DAGNode") Object to represent an incoming wire node in the DAGCircuit. @@ -29,7 +29,7 @@ python_api_name: qiskit.dagcircuit.DAGInNode ### semantic\_eq - + Check if DAG nodes are considered equivalent, e.g., as a node\_match for [`rustworkx.is_isomorphic_node_match()`](https://www.rustworkx.org/apiref/rustworkx.is_isomorphic_node_match.html#rustworkx.is_isomorphic_node_match "(in rustworkx v0.14)"). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGNode.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGNode.mdx index 1552b0ec22f..dcd5419c292 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGNode.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGNode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGNode # DAGNode - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Parent class for DAGOpNode, DAGInNode, and DAGOutNode. @@ -19,7 +19,7 @@ python_api_name: qiskit.dagcircuit.DAGNode ### semantic\_eq - + Check if DAG nodes are considered equivalent, e.g., as a node\_match for [`rustworkx.is_isomorphic_node_match()`](https://www.rustworkx.org/apiref/rustworkx.is_isomorphic_node_match.html#rustworkx.is_isomorphic_node_match "(in rustworkx v0.14)"). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOpNode.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOpNode.mdx index 98d60728896..34dd5323506 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOpNode.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOpNode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGOpNode # DAGOpNode - + Bases: [`DAGNode`](qiskit.dagcircuit.DAGNode "qiskit.dagcircuit.dagnode.DAGNode") Object to represent an Instruction at a node in the DAGCircuit. @@ -43,7 +43,7 @@ python_api_name: qiskit.dagcircuit.DAGOpNode ### semantic\_eq - + Check if DAG nodes are considered equivalent, e.g., as a node\_match for [`rustworkx.is_isomorphic_node_match()`](https://www.rustworkx.org/apiref/rustworkx.is_isomorphic_node_match.html#rustworkx.is_isomorphic_node_match "(in rustworkx v0.14)"). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOutNode.mdx b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOutNode.mdx index a087700ce4a..2f1ce8a3a6b 100644 --- a/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOutNode.mdx +++ b/docs/api/qiskit/dev/qiskit.dagcircuit.DAGOutNode.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.dagcircuit.DAGOutNode # DAGOutNode - + Bases: [`DAGNode`](qiskit.dagcircuit.DAGNode "qiskit.dagcircuit.dagnode.DAGNode") Object to represent an outgoing wire node in the DAGCircuit. @@ -29,7 +29,7 @@ python_api_name: qiskit.dagcircuit.DAGOutNode ### semantic\_eq - + Check if DAG nodes are considered equivalent, e.g., as a node\_match for [`rustworkx.is_isomorphic_node_match()`](https://www.rustworkx.org/apiref/rustworkx.is_isomorphic_node_match.html#rustworkx.is_isomorphic_node_match "(in rustworkx v0.14)"). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.passmanager.BaseController.mdx b/docs/api/qiskit/dev/qiskit.passmanager.BaseController.mdx index c4c44afa3d2..8981ea79f3b 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.BaseController.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.BaseController.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.BaseController # BaseController - + Bases: `Task`, [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Base class of controller. @@ -25,7 +25,7 @@ python_api_name: qiskit.passmanager.BaseController ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -45,7 +45,7 @@ python_api_name: qiskit.passmanager.BaseController ### iter\_tasks - + A custom logic to choose a next task to run. Controller subclass can consume the state to build a proper task pipeline. The updated state after a task execution will be fed back in as the “return” value of any `yield` statements. This indicates the order of task execution is only determined at running time. This method is not allowed to mutate the given state object. diff --git a/docs/api/qiskit/dev/qiskit.passmanager.BasePassManager.mdx b/docs/api/qiskit/dev/qiskit.passmanager.BasePassManager.mdx index 687838cf4aa..4afeab5c399 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.12)") Pass manager base class. @@ -24,7 +24,7 @@ python_api_name: qiskit.passmanager.BasePassManager ### append - + Append tasks to the schedule of passes. **Parameters** @@ -38,7 +38,7 @@ python_api_name: qiskit.passmanager.BasePassManager ### remove - + Removes a particular pass in the scheduler. **Parameters** @@ -52,7 +52,7 @@ python_api_name: qiskit.passmanager.BasePassManager ### replace - + Replace a particular pass in the scheduler. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.passmanager.BasePassManager ### run - + Run all the passes on the specified `in_programs`. **Parameters** @@ -116,7 +116,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.passmanager.ConditionalController.mdx b/docs/api/qiskit/dev/qiskit.passmanager.ConditionalController.mdx index 46d59166fa6..2683df49f76 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.ConditionalController.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.ConditionalController.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.ConditionalController # ConditionalController - + Bases: [`BaseController`](qiskit.passmanager.BaseController "qiskit.passmanager.base_tasks.BaseController") A flow controller runs the pipeline once if the condition is true, or does nothing if the condition is false. @@ -31,7 +31,7 @@ python_api_name: qiskit.passmanager.ConditionalController ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -51,7 +51,7 @@ python_api_name: qiskit.passmanager.ConditionalController ### iter\_tasks - + A custom logic to choose a next task to run. Controller subclass can consume the state to build a proper task pipeline. The updated state after a task execution will be fed back in as the “return” value of any `yield` statements. This indicates the order of task execution is only determined at running time. This method is not allowed to mutate the given state object. diff --git a/docs/api/qiskit/dev/qiskit.passmanager.DoWhileController.mdx b/docs/api/qiskit/dev/qiskit.passmanager.DoWhileController.mdx index b5b940ba4ba..aeb37515c4f 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.DoWhileController.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.DoWhileController.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.DoWhileController # DoWhileController - + Bases: [`BaseController`](qiskit.passmanager.BaseController "qiskit.passmanager.base_tasks.BaseController") Run the given tasks in a loop until the `do_while` condition on the property set becomes `False`. @@ -33,7 +33,7 @@ python_api_name: qiskit.passmanager.DoWhileController ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -53,7 +53,7 @@ python_api_name: qiskit.passmanager.DoWhileController ### iter\_tasks - + A custom logic to choose a next task to run. Controller subclass can consume the state to build a proper task pipeline. The updated state after a task execution will be fed back in as the “return” value of any `yield` statements. This indicates the order of task execution is only determined at running time. This method is not allowed to mutate the given state object. diff --git a/docs/api/qiskit/dev/qiskit.passmanager.FlowControllerLinear.mdx b/docs/api/qiskit/dev/qiskit.passmanager.FlowControllerLinear.mdx index c4a9387ab9b..fb2aa7fb57b 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.FlowControllerLinear.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.FlowControllerLinear.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.FlowControllerLinear # FlowControllerLinear - + Bases: [`BaseController`](qiskit.passmanager.BaseController "qiskit.passmanager.base_tasks.BaseController") A standard flow controller that runs tasks one after the other. @@ -31,7 +31,7 @@ python_api_name: qiskit.passmanager.FlowControllerLinear ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -51,7 +51,7 @@ python_api_name: qiskit.passmanager.FlowControllerLinear ### iter\_tasks - + A custom logic to choose a next task to run. Controller subclass can consume the state to build a proper task pipeline. The updated state after a task execution will be fed back in as the “return” value of any `yield` statements. This indicates the order of task execution is only determined at running time. This method is not allowed to mutate the given state object. diff --git a/docs/api/qiskit/dev/qiskit.passmanager.GenericPass.mdx b/docs/api/qiskit/dev/qiskit.passmanager.GenericPass.mdx index 17bd5320a9c..d7f91126edc 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.GenericPass.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.GenericPass.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.GenericPass # GenericPass - + Bases: `Task`, [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Base class of a single pass manager task. @@ -19,7 +19,7 @@ python_api_name: qiskit.passmanager.GenericPass ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -39,7 +39,7 @@ python_api_name: qiskit.passmanager.GenericPass ### name - + Name of the pass. **Return type** @@ -49,7 +49,7 @@ python_api_name: qiskit.passmanager.GenericPass ### run - + Run optimization task. **Parameters** @@ -67,7 +67,7 @@ python_api_name: qiskit.passmanager.GenericPass ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.passmanager.PassManagerState.mdx b/docs/api/qiskit/dev/qiskit.passmanager.PassManagerState.mdx index 986a1b17142..985ffa20a20 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.PassManagerState.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.PassManagerState.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.PassManagerState # PassManagerState - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A portable container object that pass manager tasks communicate through generator. diff --git a/docs/api/qiskit/dev/qiskit.passmanager.PropertySet.mdx b/docs/api/qiskit/dev/qiskit.passmanager.PropertySet.mdx index 99c7c878b79..e15d3e5c080 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.PropertySet.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.PropertySet.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.PropertySet # PropertySet - + Bases: [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") A default dictionary-like object. diff --git a/docs/api/qiskit/dev/qiskit.passmanager.WorkflowStatus.mdx b/docs/api/qiskit/dev/qiskit.passmanager.WorkflowStatus.mdx index 567632865ad..ad19da6a72e 100644 --- a/docs/api/qiskit/dev/qiskit.passmanager.WorkflowStatus.mdx +++ b/docs/api/qiskit/dev/qiskit.passmanager.WorkflowStatus.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.passmanager.WorkflowStatus # WorkflowStatus - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Collection of compilation status of workflow, i.e. pass manager run. diff --git a/docs/api/qiskit/dev/qiskit.primitives.BackendEstimator.mdx b/docs/api/qiskit/dev/qiskit.primitives.BackendEstimator.mdx index 04cbc93b459..ceb8376caee 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BackendEstimator.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BackendEstimator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BackendEstimator # BackendEstimator - + Bases: [`BaseEstimatorV1`](qiskit.primitives.BaseEstimatorV1 "qiskit.primitives.base.base_estimator.BaseEstimatorV1")\[[`PrimitiveJob`](qiskit.primitives.PrimitiveJob "qiskit.primitives.primitive_job.PrimitiveJob")\[[`EstimatorResult`](qiskit.primitives.EstimatorResult "qiskit.primitives.base.estimator_result.EstimatorResult")]] Evaluates expectation value using Pauli rotation gates. @@ -69,7 +69,7 @@ python_api_name: qiskit.primitives.BackendEstimator ### run - + Run the job of the estimation of expectation value(s). `circuits`, `observables`, and `parameter_values` should have the same length. The i-th element of the result is the expectation of observable @@ -113,7 +113,7 @@ python_api_name: qiskit.primitives.BackendEstimator ### set\_options - + Set options values for the estimator. **Parameters** @@ -123,7 +123,7 @@ python_api_name: qiskit.primitives.BackendEstimator ### set\_transpile\_options - + Set the transpiler options for transpiler. :param \*\*fields: The fields to update the options diff --git a/docs/api/qiskit/dev/qiskit.primitives.BackendEstimatorV2.mdx b/docs/api/qiskit/dev/qiskit.primitives.BackendEstimatorV2.mdx index 6cd0946a84c..470e422e3ac 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BackendEstimatorV2.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BackendEstimatorV2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BackendEstimatorV2 # BackendEstimatorV2 - + Bases: [`BaseEstimatorV2`](qiskit.primitives.BaseEstimatorV2 "qiskit.primitives.base.base_estimator.BaseEstimatorV2") Evaluates expectation values for provided quantum circuit and observable combinations @@ -48,7 +48,7 @@ python_api_name: qiskit.primitives.BackendEstimatorV2 ### run - + Estimate expectation values for each provided pub (Primitive Unified Bloc). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.BackendSampler.mdx b/docs/api/qiskit/dev/qiskit.primitives.BackendSampler.mdx index 84175b56271..9d2b6772304 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BackendSampler.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BackendSampler.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BackendSampler # BackendSampler - + Bases: [`BaseSamplerV1`](qiskit.primitives.BaseSamplerV1 "qiskit.primitives.base.base_sampler.BaseSamplerV1")\[[`PrimitiveJob`](qiskit.primitives.PrimitiveJob "qiskit.primitives.primitive_job.PrimitiveJob")\[[`SamplerResult`](qiskit.primitives.SamplerResult "qiskit.primitives.base.sampler_result.SamplerResult")]] A `BaseSampler` implementation that provides an interface for leveraging the sampler interface from any backend. @@ -76,7 +76,7 @@ python_api_name: qiskit.primitives.BackendSampler ### run - + Run the job of the sampling of bitstrings. **Parameters** @@ -100,7 +100,7 @@ python_api_name: qiskit.primitives.BackendSampler ### set\_options - + Set options values for the estimator. **Parameters** @@ -110,7 +110,7 @@ python_api_name: qiskit.primitives.BackendSampler ### set\_transpile\_options - + Set the transpiler options for transpiler. :param \*\*fields: The fields to update the options. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.primitives.BackendSamplerV2.mdx b/docs/api/qiskit/dev/qiskit.primitives.BackendSamplerV2.mdx index e52e3ac5b26..818cd128ba6 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BackendSamplerV2.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BackendSamplerV2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BackendSamplerV2 # BackendSamplerV2 - + Bases: [`BaseSamplerV2`](qiskit.primitives.BaseSamplerV2 "qiskit.primitives.base.base_sampler.BaseSamplerV2") Evaluates bitstrings for provided quantum circuits @@ -51,7 +51,7 @@ python_api_name: qiskit.primitives.BackendSamplerV2 ### run - + Run and collect samples from each pub. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.primitives.BackendSamplerV2 **Return type** - [PrimitiveJob](qiskit.primitives.PrimitiveJob "qiskit.primitives.PrimitiveJob")\[[PrimitiveResult](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[[PubResult](qiskit.primitives.PubResult "qiskit.primitives.PubResult")]] + [PrimitiveJob](qiskit.primitives.PrimitiveJob "qiskit.primitives.PrimitiveJob")\[[PrimitiveResult](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[SamplerPubResult]] diff --git a/docs/api/qiskit/dev/qiskit.primitives.BaseEstimator.mdx b/docs/api/qiskit/dev/qiskit.primitives.BaseEstimator.mdx index f4ddf397cea..256672acf78 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BaseEstimator.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BaseEstimator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BaseEstimator # BaseEstimator - + alias of [`BaseEstimatorV1`](qiskit.primitives.BaseEstimatorV1 "qiskit.primitives.base.base_estimator.BaseEstimatorV1") diff --git a/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV1.mdx b/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV1.mdx index 1944031f2b5..48d8c5690ff 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV1.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BaseEstimatorV1 # BaseEstimatorV1 - + Bases: `BasePrimitive`, [`Generic`](https://docs.python.org/3/library/typing.html#typing.Generic "(in Python v3.12)")\[`T`] Estimator V1 base class. @@ -82,7 +82,7 @@ $$ ### run - + Run the job of the estimation of expectation value(s). `circuits`, `observables`, and `parameter_values` should have the same length. The i-th element of the result is the expectation of observable @@ -126,7 +126,7 @@ $$ ### set\_options - + Set options values for the estimator. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV2.mdx b/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV2.mdx index 626235c82ba..32008863dde 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV2.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BaseEstimatorV2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BaseEstimatorV2 # BaseEstimatorV2 - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Estimator V2 base class. @@ -21,7 +21,7 @@ python_api_name: qiskit.primitives.BaseEstimatorV2 ### run - + Estimate expectation values for each provided pub (Primitive Unified Bloc). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.BasePrimitiveJob.mdx b/docs/api/qiskit/dev/qiskit.primitives.BasePrimitiveJob.mdx index c72d9bb7e0a..b52a52c44e1 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BasePrimitiveJob.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BasePrimitiveJob.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob # BasePrimitiveJob - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)"), [`Generic`](https://docs.python.org/3/library/typing.html#typing.Generic "(in Python v3.12)")\[`ResultT`, `StatusT`] Primitive job abstract base class. @@ -24,13 +24,13 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### cancel - + Attempt to cancel the job. ### cancelled - + Return whether the job has been cancelled. **Return type** @@ -40,7 +40,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### done - + Return whether the job has successfully run. **Return type** @@ -50,7 +50,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### in\_final\_state - + Return whether the job is in a final job state such as `DONE` or `ERROR`. **Return type** @@ -60,7 +60,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### job\_id - + Return a unique id identifying the job. **Return type** @@ -70,7 +70,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### result - + Return the results of the job. **Return type** @@ -80,7 +80,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### running - + Return whether the job is actively running. **Return type** @@ -90,7 +90,7 @@ python_api_name: qiskit.primitives.BasePrimitiveJob ### status - + Return the status of the job. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.primitives.BaseSampler.mdx b/docs/api/qiskit/dev/qiskit.primitives.BaseSampler.mdx index fbd27621848..85e26d11ddb 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BaseSampler.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BaseSampler.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BaseSampler # BaseSampler - + alias of [`BaseSamplerV1`](qiskit.primitives.BaseSamplerV1 "qiskit.primitives.base.base_sampler.BaseSamplerV1") diff --git a/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV1.mdx b/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV1.mdx index 578577b9db4..ef607fa0938 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV1.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BaseSamplerV1 # BaseSamplerV1 - + Bases: `BasePrimitive`, [`Generic`](https://docs.python.org/3/library/typing.html#typing.Generic "(in Python v3.12)")\[`T`] Sampler V1 base class @@ -81,7 +81,7 @@ python_api_name: qiskit.primitives.BaseSamplerV1 ### run - + Run the job of the sampling of bitstrings. **Parameters** @@ -105,7 +105,7 @@ python_api_name: qiskit.primitives.BaseSamplerV1 ### set\_options - + Set options values for the estimator. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV2.mdx b/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV2.mdx index 04d7e3e106a..4f188b45f14 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV2.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BaseSamplerV2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BaseSamplerV2 # BaseSamplerV2 - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Sampler V2 base class. @@ -21,7 +21,7 @@ python_api_name: qiskit.primitives.BaseSamplerV2 ### run - + Run and collect samples from each pub. **Parameters** @@ -35,7 +35,7 @@ python_api_name: qiskit.primitives.BaseSamplerV2 **Return type** - [BasePrimitiveJob](qiskit.primitives.BasePrimitiveJob "qiskit.primitives.BasePrimitiveJob")\[[PrimitiveResult](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[[PubResult](qiskit.primitives.PubResult "qiskit.primitives.PubResult")]] + [BasePrimitiveJob](qiskit.primitives.BasePrimitiveJob "qiskit.primitives.BasePrimitiveJob")\[[PrimitiveResult](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[SamplerPubResult]] diff --git a/docs/api/qiskit/dev/qiskit.primitives.BitArray.mdx b/docs/api/qiskit/dev/qiskit.primitives.BitArray.mdx index 4abbf7ded71..8c07ee088db 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.BitArray.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.BitArray.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.BitArray # BitArray - + Bases: `ShapedMixin` Stores an array of bit values. @@ -65,7 +65,7 @@ python_api_name: qiskit.primitives.BitArray ### bitcount - + Compute the number of ones appearing in the binary representation of each shot. **Returns** @@ -77,9 +77,118 @@ python_api_name: qiskit.primitives.BitArray [*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v1.26)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)"), [*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v1.26)")\[*uint64*]] + ### concatenate + + + Join a sequence of bit arrays along an existing axis. + + **Parameters** + + * **bit\_arrays** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.12)")*\[*[*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray")*]*) – The bit arrays must have (1) the same number of bits, (2) the same number of shots, and (3) the same shape, except in the dimension corresponding to axis (the first, by default). + * **axis** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – The axis along which the arrays will be joined. Default is 0. + + **Returns** + + The concatenated bit array. + + **Raises** + + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the sequence of bit arrays is empty. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different number of bits. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different number of shots. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different number of dimensions. + + **Return type** + + [*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray") + + + ### concatenate\_bits + + + Join a sequence of bit arrays along the bits axis. + + + This method is equivalent to per-shot bitstring concatenation. + + + **Parameters** + + **bit\_arrays** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.12)")*\[*[*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray")*]*) – Bit arrays that have (1) the same number of shots, and (2) the same shape. + + **Returns** + + The stacked bit array. + + **Raises** + + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the sequence of bit arrays is empty. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different number of shots. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different shape. + + **Return type** + + [*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray") + + + ### concatenate\_shots + + + Join a sequence of bit arrays along the shots axis. + + **Parameters** + + **bit\_arrays** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.12)")*\[*[*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray")*]*) – The bit arrays must have (1) the same number of bits, and (2) the same shape. + + **Returns** + + The stacked bit array. + + **Raises** + + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the sequence of bit arrays is empty. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different number of bits. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If any bit arrays has a different shape. + + **Return type** + + [*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray") + + + ### expectation\_values + + + Compute the expectation values of the provided observables, broadcasted against this bit array. + + + This method returns the real part of the expectation value even if the operator has complex coefficients due to the specification of [`sampled_expectation_value()`](result#qiskit.result.sampled_expectation_value "qiskit.result.sampled_expectation_value"). + + + **Parameters** + + * **observables** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*Pauli*](qiskit.quantum_info.Pauli "qiskit.quantum_info.operators.symplectic.pauli.Pauli") *|*[*SparsePauliOp*](qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.operators.symplectic.sparse_pauli_op.SparsePauliOp") *|*[*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.12)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*Pauli*](qiskit.quantum_info.Pauli "qiskit.quantum_info.operators.symplectic.pauli.Pauli")*,* [*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")*] | \_SupportsArray\[*[*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v1.26)")*\[*[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)")*]] | \_NestedSequence\[\_SupportsArray\[*[*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v1.26)")*\[*[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)")*]]] |* [*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") *|*[*complex*](https://docs.python.org/3/library/functions.html#complex "(in Python v3.12)") *|*[*bytes*](https://docs.python.org/3/library/stdtypes.html#bytes "(in Python v3.12)") *| \_NestedSequence\[*[*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") *|*[*complex*](https://docs.python.org/3/library/functions.html#complex "(in Python v3.12)") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *|*[*bytes*](https://docs.python.org/3/library/stdtypes.html#bytes "(in Python v3.12)")*]*) – The observable(s) to take the expectation value of. + * **and** (*Must have a shape broadcastable with with this bit array*) – + * **array.** (*the same number of qubits as the number of bits of this bit*) – + * **diagonal** (*The observables must be*) – + + **Returns** + + An array of expectation values whose shape is the broadcast shape of `observables` and this bit array. + + **Raises** + + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the provided observables does not have a shape broadcastable with this bit array. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the provided observables does not have the same number of qubits as the number of bits of this bit array. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the provided observables are not diagonal. + + **Return type** + + [*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray "(in NumPy v1.26)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)"), [*dtype*](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype "(in NumPy v1.26)")\[*float64*]] + + ### from\_bool\_array - + Construct a new bit array from an array of bools. **Parameters** @@ -98,7 +207,7 @@ python_api_name: qiskit.primitives.BitArray ### from\_counts - + Construct a new bit array from one or more `Counts`-like objects. The `counts` can have keys that are (uniformly) integers, hexstrings, or bitstrings. Their values represent numbers of occurrences of that value. @@ -124,7 +233,7 @@ python_api_name: qiskit.primitives.BitArray ### from\_samples - + Construct a new bit array from an iterable of bitstrings, hexstrings, or integers. All samples are assumed to be integers if the first one is. Strings are all assumed to be bitstrings whenever the first string doesn’t start with `"0x"`. @@ -151,7 +260,7 @@ python_api_name: qiskit.primitives.BitArray ### get\_bitstrings - + Return a list of bitstrings. **Parameters** @@ -169,7 +278,7 @@ python_api_name: qiskit.primitives.BitArray ### get\_counts - + Return a counts dictionary with bitstring keys. **Parameters** @@ -187,7 +296,7 @@ python_api_name: qiskit.primitives.BitArray ### get\_int\_counts - + Return a counts dictionary, where bitstrings are stored as `int`s. **Parameters** @@ -205,7 +314,7 @@ python_api_name: qiskit.primitives.BitArray ### reshape - + Return a new reshaped bit array. The [`num_shots`](#qiskit.primitives.BitArray.num_shots "qiskit.primitives.BitArray.num_shots") axis is either included or excluded from the reshaping procedure depending on which picture the new shape is compatible with. For example, for a bit array with shape `(20, 5)` and `64` shots, a reshape to `(100,)` would leave the number of shots intact, whereas a reshape to `(200, 32)` would change the number of shots to `32`. @@ -226,5 +335,78 @@ python_api_name: qiskit.primitives.BitArray [*BitArray*](#qiskit.primitives.BitArray "qiskit.primitives.containers.bit_array.BitArray") + + ### slice\_bits + + + Return a bit array sliced along the bit axis of some indices of interest. + + + The convention used by this method is that the index `0` corresponds to the least-significant bit in the [`array`](#qiskit.primitives.BitArray.array "qiskit.primitives.BitArray.array"), or equivalently the right-most bitstring entry as returned by [`get_counts()`](#qiskit.primitives.BitArray.get_counts "qiskit.primitives.BitArray.get_counts") or [`get_bitstrings()`](#qiskit.primitives.BitArray.get_bitstrings "qiskit.primitives.BitArray.get_bitstrings"), etc. + + If this bit array was produced by a sampler, then an index `i` corresponds to the [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister") location `creg[i]`. + + + **Parameters** + + **indices** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| Sequence\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – The bit positions of interest to slice along. + + **Returns** + + A bit array sliced along the bit axis. + + **Raises** + + [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If there are any invalid indices of the bit axis. + + **Return type** + + [BitArray](#qiskit.primitives.BitArray "qiskit.primitives.BitArray") + + + ### slice\_shots + + + Return a bit array sliced along the shots axis of some indices of interest. + + **Parameters** + + **indices** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| Sequence\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – The shots positions of interest to slice along. + + **Returns** + + A bit array sliced along the shots axis. + + **Raises** + + [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If there are any invalid indices of the shots axis. + + **Return type** + + [BitArray](#qiskit.primitives.BitArray "qiskit.primitives.BitArray") + + + ### transpose + + + Return a bit array with axes transposed. + + **Parameters** + + **axes** – None, tuple of ints or n ints. See [ndarray.transpose](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.transpose.html#numpy.ndarray.transpose) for the details. + + **Returns** + + A bit array with axes permuted. + + **Return type** + + [BitArray](#qiskit.primitives.BitArray "qiskit.primitives.BitArray") + + **Raises** + + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If `axes` don’t match this bit array. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If `axes` includes any indices that are out of bounds. + diff --git a/docs/api/qiskit/dev/qiskit.primitives.DataBin.mdx b/docs/api/qiskit/dev/qiskit.primitives.DataBin.mdx index 874212a0d00..25ba9e9cc05 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.DataBin.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.DataBin.mdx @@ -8,11 +8,75 @@ python_api_name: qiskit.primitives.DataBin # DataBin - - Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") + + Bases: `ShapedMixin` - Base class for data bin containers. + Namespace for storing data. - Subclasses are typically made via `make_data_bin`, which is a specialization of `make_dataclass`. + ```python + data = DataBin( + alpha=BitArray.from_bitstrings(["0010"]), + beta=np.array([1.2]) + ) + + print("alpha data:", data.alpha) + print("beta data:", data.beta) + ``` + + **Parameters** + + * **data** – Name/value data to place in the data bin. + * **shape** (*ShapeInput*) – The leading shape common to all entries in the data bin. This defaults to the trivial leading shape of `()` that is compatible with all objects. + + **Raises** + + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If a name overlaps with a method name on this class. + * [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If some value is inconsistent with the provided shape. + + ## Attributes + + ### ndim + + + + ### shape + + + + ### size + + + + ## Methods + + ### items + + + Return a view of field names and values + + **Return type** + + [*ItemsView*](https://docs.python.org/3/library/typing.html#typing.ItemsView "(in Python v3.12)")\[[str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)"), [*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)")] + + + ### keys + + + Return a view of field names. + + **Return type** + + [*KeysView*](https://docs.python.org/3/library/typing.html#typing.KeysView "(in Python v3.12)")\[[str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")] + + + ### values + + + Return a view of values. + + **Return type** + + [*ValuesView*](https://docs.python.org/3/library/typing.html#typing.ValuesView "(in Python v3.12)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)")] + diff --git a/docs/api/qiskit/dev/qiskit.primitives.Estimator.mdx b/docs/api/qiskit/dev/qiskit.primitives.Estimator.mdx index 93f6681e84d..63b3d8e503e 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.Estimator.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.Estimator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.Estimator # Estimator - + Bases: [`BaseEstimatorV1`](qiskit.primitives.BaseEstimatorV1 "qiskit.primitives.base.base_estimator.BaseEstimatorV1")\[[`PrimitiveJob`](qiskit.primitives.PrimitiveJob "qiskit.primitives.primitive_job.PrimitiveJob")\[[`EstimatorResult`](qiskit.primitives.EstimatorResult "qiskit.primitives.base.estimator_result.EstimatorResult")]] Reference implementation of [`BaseEstimator`](qiskit.primitives.BaseEstimator "qiskit.primitives.BaseEstimator"). @@ -42,7 +42,7 @@ python_api_name: qiskit.primitives.Estimator ### run - + Run the job of the estimation of expectation value(s). `circuits`, `observables`, and `parameter_values` should have the same length. The i-th element of the result is the expectation of observable @@ -86,7 +86,7 @@ python_api_name: qiskit.primitives.Estimator ### set\_options - + Set options values for the estimator. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.EstimatorResult.mdx b/docs/api/qiskit/dev/qiskit.primitives.EstimatorResult.mdx index b6990a53e59..3ffbe2d711e 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.EstimatorResult.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.EstimatorResult.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.EstimatorResult # EstimatorResult - + Bases: `_BasePrimitiveResult` Result of Estimator. diff --git a/docs/api/qiskit/dev/qiskit.primitives.PrimitiveJob.mdx b/docs/api/qiskit/dev/qiskit.primitives.PrimitiveJob.mdx index 495d2c5b5df..f4288f84521 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.PrimitiveJob.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.PrimitiveJob.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.PrimitiveJob # PrimitiveJob - + Bases: [`BasePrimitiveJob`](qiskit.primitives.BasePrimitiveJob "qiskit.primitives.base.base_primitive_job.BasePrimitiveJob")\[`ResultT`, [`JobStatus`](qiskit.providers.JobStatus "qiskit.providers.jobstatus.JobStatus")] Primitive job class for the reference implementations of Primitives. @@ -21,13 +21,13 @@ python_api_name: qiskit.primitives.PrimitiveJob ### cancel - + Attempt to cancel the job. ### cancelled - + Return whether the job has been cancelled. **Return type** @@ -37,7 +37,7 @@ python_api_name: qiskit.primitives.PrimitiveJob ### done - + Return whether the job has successfully run. **Return type** @@ -47,7 +47,7 @@ python_api_name: qiskit.primitives.PrimitiveJob ### in\_final\_state - + Return whether the job is in a final job state such as `DONE` or `ERROR`. **Return type** @@ -57,7 +57,7 @@ python_api_name: qiskit.primitives.PrimitiveJob ### job\_id - + Return a unique id identifying the job. **Return type** @@ -67,7 +67,7 @@ python_api_name: qiskit.primitives.PrimitiveJob ### result - + Return the results of the job. **Return type** @@ -77,7 +77,7 @@ python_api_name: qiskit.primitives.PrimitiveJob ### running - + Return whether the job is actively running. **Return type** @@ -87,7 +87,7 @@ python_api_name: qiskit.primitives.PrimitiveJob ### status - + Return the status of the job. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.primitives.PrimitiveResult.mdx b/docs/api/qiskit/dev/qiskit.primitives.PrimitiveResult.mdx index 4f6b56c1149..0844717f64d 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.PrimitiveResult.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.PrimitiveResult.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.PrimitiveResult # PrimitiveResult - + Bases: [`Generic`](https://docs.python.org/3/library/typing.html#typing.Generic "(in Python v3.12)")\[`T`] A container for multiple pub results and global metadata. diff --git a/docs/api/qiskit/dev/qiskit.primitives.PubResult.mdx b/docs/api/qiskit/dev/qiskit.primitives.PubResult.mdx index 8b7d80d0972..fc83ff7c8c2 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.PubResult.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.PubResult.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.PubResult # PubResult - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Result of Primitive Unified Bloc. diff --git a/docs/api/qiskit/dev/qiskit.primitives.Sampler.mdx b/docs/api/qiskit/dev/qiskit.primitives.Sampler.mdx index c16653e9550..3a308eb29bb 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.Sampler.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.Sampler.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.Sampler # Sampler - + Bases: [`BaseSamplerV1`](qiskit.primitives.BaseSamplerV1 "qiskit.primitives.base.base_sampler.BaseSamplerV1")\[[`PrimitiveJob`](qiskit.primitives.PrimitiveJob "qiskit.primitives.primitive_job.PrimitiveJob")\[[`SamplerResult`](qiskit.primitives.SamplerResult "qiskit.primitives.base.sampler_result.SamplerResult")]] Sampler class. @@ -44,7 +44,7 @@ python_api_name: qiskit.primitives.Sampler ### run - + Run the job of the sampling of bitstrings. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.primitives.Sampler ### set\_options - + Set options values for the estimator. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.SamplerResult.mdx b/docs/api/qiskit/dev/qiskit.primitives.SamplerResult.mdx index cb0788e5b0e..1fdbb40df17 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.SamplerResult.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.SamplerResult.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.SamplerResult # SamplerResult - + Bases: `_BasePrimitiveResult` Result of Sampler. diff --git a/docs/api/qiskit/dev/qiskit.primitives.StatevectorEstimator.mdx b/docs/api/qiskit/dev/qiskit.primitives.StatevectorEstimator.mdx index d900f33ed57..2bf5795f1a1 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.StatevectorEstimator.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.StatevectorEstimator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.StatevectorEstimator # StatevectorEstimator - + Bases: [`BaseEstimatorV2`](qiskit.primitives.BaseEstimatorV2 "qiskit.primitives.base.base_estimator.BaseEstimatorV2") Simple implementation of [`BaseEstimatorV2`](qiskit.primitives.BaseEstimatorV2 "qiskit.primitives.BaseEstimatorV2") with full state vector simulation. @@ -101,7 +101,7 @@ python_api_name: qiskit.primitives.StatevectorEstimator ### run - + Estimate expectation values for each provided pub (Primitive Unified Bloc). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.primitives.StatevectorSampler.mdx b/docs/api/qiskit/dev/qiskit.primitives.StatevectorSampler.mdx index 6ab58ecab1d..ad16fefd3f2 100644 --- a/docs/api/qiskit/dev/qiskit.primitives.StatevectorSampler.mdx +++ b/docs/api/qiskit/dev/qiskit.primitives.StatevectorSampler.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.primitives.StatevectorSampler # StatevectorSampler - + Bases: [`BaseSamplerV2`](qiskit.primitives.BaseSamplerV2 "qiskit.primitives.base.base_sampler.BaseSamplerV2") Simple implementation of [`BaseSamplerV2`](qiskit.primitives.BaseSamplerV2 "qiskit.primitives.BaseSamplerV2") using full state vector simulation. @@ -108,7 +108,7 @@ python_api_name: qiskit.primitives.StatevectorSampler ### run - + Run and collect samples from each pub. **Parameters** @@ -122,7 +122,7 @@ python_api_name: qiskit.primitives.StatevectorSampler **Return type** - [PrimitiveJob](qiskit.primitives.PrimitiveJob "qiskit.primitives.PrimitiveJob")\[[PrimitiveResult](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[[PubResult](qiskit.primitives.PubResult "qiskit.primitives.PubResult")]] + [PrimitiveJob](qiskit.primitives.PrimitiveJob "qiskit.primitives.PrimitiveJob")\[[PrimitiveResult](qiskit.primitives.PrimitiveResult "qiskit.primitives.PrimitiveResult")\[SamplerPubResult]] diff --git a/docs/api/qiskit/dev/qiskit.providers.Backend.mdx b/docs/api/qiskit/dev/qiskit.providers.Backend.mdx index a0bbe46ee14..61aa7dd9a3d 100644 --- a/docs/api/qiskit/dev/qiskit.providers.Backend.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.Backend.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.Backend # Backend - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Base common type for all versioned Backend abstract classes. diff --git a/docs/api/qiskit/dev/qiskit.providers.BackendV1.mdx b/docs/api/qiskit/dev/qiskit.providers.BackendV1.mdx index 0dc4807a392..9278c29891c 100644 --- a/docs/api/qiskit/dev/qiskit.providers.BackendV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.BackendV1.mdx @@ -8,12 +8,12 @@ python_api_name: qiskit.providers.BackendV1 # BackendV1 - + Bases: [`Backend`](qiskit.providers.Backend "qiskit.providers.backend.Backend"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Abstract class for Backends - This abstract class is to be used for all Backend objects created by a provider. There are several classes of information contained in a Backend. The first are the attributes of the class itself. These should be used to defined the immutable characteristics of the backend. The `options` attribute of the backend is used to contain the dynamic user configurable options of the backend. It should be used more for runtime options that configure how the backend is used. For example, something like a `shots` field for a backend that runs experiments which would contain an int for how many shots to execute. The `properties` attribute is optionally defined [`BackendProperties`](qiskit.providers.models.BackendProperties "qiskit.providers.models.BackendProperties") object and is used to return measured properties, or properties of a backend that may change over time. The simplest example of this would be a version string, which will change as a backend is updated, but also could be something like noise parameters for backends that run experiments. + This abstract class is to be used for Backend objects. There are several classes of information contained in a Backend. The first are the attributes of the class itself. These should be used to defined the immutable characteristics of the backend. The `options` attribute of the backend is used to contain the dynamic user configurable options of the backend. It should be used more for runtime options that configure how the backend is used. For example, something like a `shots` field for a backend that runs experiments which would contain an int for how many shots to execute. The `properties` attribute is optionally defined [`BackendProperties`](qiskit.providers.models.BackendProperties "qiskit.providers.models.BackendProperties") object and is used to return measured properties, or properties of a backend that may change over time. The simplest example of this would be a version string, which will change as a backend is updated, but also could be something like noise parameters for backends that run experiments. This first version of the Backend abstract class is written to be mostly backwards compatible with the legacy providers interface. This includes reusing the model objects [`BackendProperties`](qiskit.providers.models.BackendProperties "qiskit.providers.models.BackendProperties") and [`BackendConfiguration`](qiskit.providers.models.BackendConfiguration "qiskit.providers.models.BackendConfiguration"). This was done to ease the transition for users and provider maintainers to the new versioned providers. Expect, future versions of this abstract class to change the data model and interface. @@ -21,7 +21,7 @@ python_api_name: qiskit.providers.BackendV1 ### \_default\_options - + Return the default options This method will return a [`qiskit.providers.Options`](qiskit.providers.Options "qiskit.providers.Options") subclass object that will be used for the default options. These should be the default parameters to use for the options of the backend. @@ -51,7 +51,7 @@ python_api_name: qiskit.providers.BackendV1 In addition to the public abstract methods, subclasses should also implement the following private methods: - + Return the default options This method will return a [`qiskit.providers.Options`](qiskit.providers.Options "qiskit.providers.Options") subclass object that will be used for the default options. These should be the default parameters to use for the options of the backend. @@ -85,7 +85,7 @@ python_api_name: qiskit.providers.BackendV1 ### configuration - + Return the backend configuration. **Returns** @@ -99,7 +99,7 @@ python_api_name: qiskit.providers.BackendV1 ### name - + Return the backend name. **Returns** @@ -113,7 +113,7 @@ python_api_name: qiskit.providers.BackendV1 ### properties - + Return the backend properties. **Returns** @@ -127,7 +127,7 @@ python_api_name: qiskit.providers.BackendV1 ### provider - + Return the backend Provider. **Returns** @@ -141,7 +141,7 @@ python_api_name: qiskit.providers.BackendV1 ### run - + Run on the backend. This method returns a [`Job`](qiskit.providers.Job "qiskit.providers.Job") object that runs circuits. Depending on the backend this may be either an async or sync call. It is at the discretion of the provider to decide whether running should block until the execution is finished or not: the Job class can handle either situation. @@ -162,7 +162,7 @@ python_api_name: qiskit.providers.BackendV1 ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -178,7 +178,7 @@ python_api_name: qiskit.providers.BackendV1 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.BackendV2.mdx b/docs/api/qiskit/dev/qiskit.providers.BackendV2.mdx index f21001d526b..60aa15fd318 100644 --- a/docs/api/qiskit/dev/qiskit.providers.BackendV2.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.BackendV2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.BackendV2 # BackendV2 - + Bases: [`Backend`](qiskit.providers.Backend "qiskit.providers.backend.Backend"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Abstract class for Backends @@ -25,7 +25,7 @@ python_api_name: qiskit.providers.BackendV2 ### \_default\_options - + Return the default options This method will return a [`qiskit.providers.Options`](qiskit.providers.Options "qiskit.providers.Options") subclass object that will be used for the default options. These should be the default parameters to use for the options of the backend. @@ -214,7 +214,7 @@ python_api_name: qiskit.providers.BackendV2 ### acquire\_channel - + Return the acquisition channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -234,7 +234,7 @@ python_api_name: qiskit.providers.BackendV2 ### control\_channel - + Return the secondary drive channel for the given qubit This is typically utilized for controlling multiqubit interactions. This channel is derived from other channels. @@ -260,7 +260,7 @@ python_api_name: qiskit.providers.BackendV2 ### drive\_channel - + Return the drive channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -280,7 +280,7 @@ python_api_name: qiskit.providers.BackendV2 ### measure\_channel - + Return the measure stimulus channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -300,7 +300,7 @@ python_api_name: qiskit.providers.BackendV2 ### qubit\_properties - + Return QubitProperties for a given qubit. If there are no defined or the backend doesn’t support querying these details this method does not need to be implemented. @@ -324,7 +324,7 @@ python_api_name: qiskit.providers.BackendV2 ### run - + Run on the backend. This method returns a [`Job`](qiskit.providers.Job "qiskit.providers.Job") object that runs circuits. Depending on the backend this may be either an async or sync call. It is at the discretion of the provider to decide whether running should block until the execution is finished or not: the Job class can handle either situation. @@ -345,7 +345,7 @@ python_api_name: qiskit.providers.BackendV2 ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. diff --git a/docs/api/qiskit/dev/qiskit.providers.BackendV2Converter.mdx b/docs/api/qiskit/dev/qiskit.providers.BackendV2Converter.mdx index b22f8338693..e5c0f43f342 100644 --- a/docs/api/qiskit/dev/qiskit.providers.BackendV2Converter.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.BackendV2Converter.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.BackendV2Converter # BackendV2Converter - + Bases: [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.backend.BackendV2") A converter class that takes a [`BackendV1`](qiskit.providers.BackendV1 "qiskit.providers.BackendV1") instance and wraps it in a [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") interface. @@ -167,7 +167,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### acquire\_channel - + Return the acquisition channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -187,7 +187,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### control\_channel - + Return the secondary drive channel for the given qubit This is typically utilized for controlling multiqubit interactions. This channel is derived from other channels. @@ -213,7 +213,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### drive\_channel - + Return the drive channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -233,7 +233,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### measure\_channel - + Return the measure stimulus channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -253,7 +253,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### qubit\_properties - + Return QubitProperties for a given qubit. If there are no defined or the backend doesn’t support querying these details this method does not need to be implemented. @@ -277,7 +277,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### run - + Run on the backend. This method returns a [`Job`](qiskit.providers.Job "qiskit.providers.Job") object that runs circuits. Depending on the backend this may be either an async or sync call. It is at the discretion of the provider to decide whether running should block until the execution is finished or not: the Job class can handle either situation. @@ -298,7 +298,7 @@ python_api_name: qiskit.providers.BackendV2Converter ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. diff --git a/docs/api/qiskit/dev/qiskit.providers.Job.mdx b/docs/api/qiskit/dev/qiskit.providers.Job.mdx index 620b563ccd5..018e87b52c3 100644 --- a/docs/api/qiskit/dev/qiskit.providers.Job.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.Job.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.Job # Job - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Base common type for all versioned Job abstract classes. diff --git a/docs/api/qiskit/dev/qiskit.providers.JobStatus.mdx b/docs/api/qiskit/dev/qiskit.providers.JobStatus.mdx index 6c7b936c777..e43afb4baee 100644 --- a/docs/api/qiskit/dev/qiskit.providers.JobStatus.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.JobStatus.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.JobStatus # JobStatus - + Bases: [`Enum`](https://docs.python.org/3/library/enum.html#enum.Enum "(in Python v3.12)") Class for job status enumerated type. diff --git a/docs/api/qiskit/dev/qiskit.providers.JobV1.mdx b/docs/api/qiskit/dev/qiskit.providers.JobV1.mdx index c19c155b403..8a54c427992 100644 --- a/docs/api/qiskit/dev/qiskit.providers.JobV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.JobV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.JobV1 # JobV1 - + Bases: [`Job`](qiskit.providers.Job "qiskit.providers.job.Job"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Class to handle jobs @@ -33,7 +33,7 @@ python_api_name: qiskit.providers.JobV1 ### backend - + Return the backend where this job was executed. **Return type** @@ -43,13 +43,13 @@ python_api_name: qiskit.providers.JobV1 ### cancel - + Attempt to cancel the job. ### cancelled - + Return whether the job has been cancelled. **Return type** @@ -59,7 +59,7 @@ python_api_name: qiskit.providers.JobV1 ### done - + Return whether the job has successfully run. **Return type** @@ -69,7 +69,7 @@ python_api_name: qiskit.providers.JobV1 ### in\_final\_state - + Return whether the job is in a final job state such as `DONE` or `ERROR`. **Return type** @@ -79,7 +79,7 @@ python_api_name: qiskit.providers.JobV1 ### job\_id - + Return a unique id identifying the job. **Return type** @@ -89,7 +89,7 @@ python_api_name: qiskit.providers.JobV1 ### result - + Return the results of the job. **Return type** @@ -99,7 +99,7 @@ python_api_name: qiskit.providers.JobV1 ### running - + Return whether the job is actively running. **Return type** @@ -109,7 +109,7 @@ python_api_name: qiskit.providers.JobV1 ### status - + Return the status of the job, among the values of `JobStatus`. **Return type** @@ -119,13 +119,13 @@ python_api_name: qiskit.providers.JobV1 ### submit - + Submit the job to the backend for execution. ### wait\_for\_final\_state - + Poll the job status until it progresses to a final state such as `DONE` or `ERROR`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.providers.Options.mdx b/docs/api/qiskit/dev/qiskit.providers.Options.mdx index 816dc4dcb04..b35f6c0aa77 100644 --- a/docs/api/qiskit/dev/qiskit.providers.Options.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.Options.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.Options # Options - + Bases: [`Mapping`](https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping "(in Python v3.12)") Base options object @@ -75,7 +75,7 @@ python_api_name: qiskit.providers.Options ### set\_validator - + Set an optional validator for a field in the options Setting a validator enables changes to an options values to be validated for correctness when [`update_options()`](#qiskit.providers.Options.update_options "qiskit.providers.Options.update_options") is called. For example if you have a numeric field like `shots` you can specify a bounds tuple that set an upper and lower bound on the value such as: @@ -100,7 +100,7 @@ python_api_name: qiskit.providers.Options ### update\_options - + Update options with kwargs diff --git a/docs/api/qiskit/dev/qiskit.providers.Provider.mdx b/docs/api/qiskit/dev/qiskit.providers.Provider.mdx index 14948691653..e34cb3034f8 100644 --- a/docs/api/qiskit/dev/qiskit.providers.Provider.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.Provider.mdx @@ -8,13 +8,17 @@ python_api_name: qiskit.providers.Provider # Provider - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Base common type for all versioned Provider abstract classes. Note this class should not be inherited from directly, it is intended to be used for type checking. When implementing a provider you should use the versioned abstract classes as the parent class and not this class directly. + + The class `qiskit.providers.provider.Provider` is deprecated as of qiskit 1.1. It will be removed no earlier than 3 months after the release date. The abstract Provider and ProviderV1 classes are deprecated and will be removed in 2.0. You can just remove it as the parent class and a get\_backend method that returns the backends from self.backend. + + ## Attributes ### version diff --git a/docs/api/qiskit/dev/qiskit.providers.ProviderV1.mdx b/docs/api/qiskit/dev/qiskit.providers.ProviderV1.mdx index 8b2f652ad7b..a63267b9132 100644 --- a/docs/api/qiskit/dev/qiskit.providers.ProviderV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.ProviderV1.mdx @@ -8,11 +8,15 @@ python_api_name: qiskit.providers.ProviderV1 # ProviderV1 - + Bases: [`Provider`](qiskit.providers.Provider "qiskit.providers.provider.Provider"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Base class for a Backend Provider. + + The class `qiskit.providers.provider.Provider` is deprecated as of qiskit 1.1. It will be removed no earlier than 3 months after the release date. The abstract Provider and ProviderV1 classes are deprecated and will be removed in 2.0. You can just remove it as the parent class and a get\_backend method that returns the backends from self.backend. + + ## Attributes ### version @@ -23,7 +27,7 @@ python_api_name: qiskit.providers.ProviderV1 ### backends - + Return a list of backends matching the specified filtering. **Parameters** @@ -44,9 +48,13 @@ python_api_name: qiskit.providers.ProviderV1 ### get\_backend - + Return a single backend matching the specified filtering. + + The method `qiskit.providers.provider.ProviderV1.get_backend()` is deprecated as of qiskit 1.1. It will be removed no earlier than 3 months after the release date. The abstract Provider and ProviderV1 classes are deprecated and will be removed in 2.0. You can just remove it as the parent class and a get\_backend method that returns the backends from self.backend. + + **Parameters** * **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – name of the backend. diff --git a/docs/api/qiskit/dev/qiskit.providers.QubitProperties.mdx b/docs/api/qiskit/dev/qiskit.providers.QubitProperties.mdx index 4452462af49..5052ace905d 100644 --- a/docs/api/qiskit/dev/qiskit.providers.QubitProperties.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.QubitProperties.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.QubitProperties # QubitProperties - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A representation of the properties of a qubit on a backend. diff --git a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProvider.mdx b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProvider.mdx index 60e968bebf6..2e7af4b8ab3 100644 --- a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProvider.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProvider.mdx @@ -8,11 +8,15 @@ python_api_name: qiskit.providers.basic_provider.BasicProvider # BasicProvider - + Bases: [`ProviderV1`](qiskit.providers.ProviderV1 "qiskit.providers.provider.ProviderV1") Provider for test simulators. + + The class `qiskit.providers.provider.Provider` is deprecated as of qiskit 1.1. It will be removed no earlier than 3 months after the release date. The abstract Provider and ProviderV1 classes are deprecated and will be removed in 2.0. You can just remove it as the parent class and a get\_backend method that returns the backends from self.backend. + + ## Attributes ### version @@ -23,7 +27,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProvider ### backends - + Return a list of backends matching the specified filtering. **Parameters** @@ -44,9 +48,13 @@ python_api_name: qiskit.providers.basic_provider.BasicProvider ### get\_backend - + Return a single backend matching the specified filtering. + + The method `qiskit.providers.provider.ProviderV1.get_backend()` is deprecated as of qiskit 1.1. It will be removed no earlier than 3 months after the release date. The abstract Provider and ProviderV1 classes are deprecated and will be removed in 2.0. You can just remove it as the parent class and a get\_backend method that returns the backends from self.backend. + + **Parameters** * **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – name of the backend. diff --git a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderError.mdx b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderError.mdx index 2d8e8d2675a..b7c4008074f 100644 --- a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderError.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderError.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderError # qiskit.providers.basic\_provider.BasicProviderError - + Base class for errors raised by the Basic Provider. Set the error message. diff --git a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderJob.mdx b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderJob.mdx index 08992519847..b655c668824 100644 --- a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderJob.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicProviderJob.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob # BasicProviderJob - + Bases: [`JobV1`](qiskit.providers.JobV1 "qiskit.providers.job.JobV1") BasicProviderJob class. @@ -31,19 +31,19 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### backend - + Return the instance of the backend used for this job. ### cancel - + Attempt to cancel the job. ### cancelled - + Return whether the job has been cancelled. **Return type** @@ -53,7 +53,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### done - + Return whether the job has successfully run. **Return type** @@ -63,7 +63,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### in\_final\_state - + Return whether the job is in a final job state such as `DONE` or `ERROR`. **Return type** @@ -73,7 +73,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### job\_id - + Return a unique id identifying the job. **Return type** @@ -83,7 +83,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### result - + Get job result . **Returns** @@ -97,7 +97,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### running - + Return whether the job is actively running. **Return type** @@ -107,7 +107,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### status - + Gets the status of the job by querying the Python’s future **Returns** @@ -121,7 +121,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### submit - + Submit the job to the backend for execution. **Raises** @@ -131,7 +131,7 @@ python_api_name: qiskit.providers.basic_provider.BasicProviderJob ### wait\_for\_final\_state - + Poll the job status until it progresses to a final state such as `DONE` or `ERROR`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicSimulator.mdx b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicSimulator.mdx index 036ba3b6f77..08f0dfb7b7c 100644 --- a/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicSimulator.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.basic_provider.BasicSimulator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator # BasicSimulator - + Bases: [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.backend.BackendV2") Python implementation of a basic (non-efficient) quantum simulator. @@ -175,7 +175,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### acquire\_channel - + Return the acquisition channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -195,7 +195,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### configuration - + Return the simulator backend configuration. **Returns** @@ -209,7 +209,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### control\_channel - + Return the secondary drive channel for the given qubit This is typically utilized for controlling multiqubit interactions. This channel is derived from other channels. @@ -235,7 +235,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### drive\_channel - + Return the drive channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -255,7 +255,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### measure\_channel - + Return the measure stimulus channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -275,7 +275,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### qubit\_properties - + Return QubitProperties for a given qubit. If there are no defined or the backend doesn’t support querying these details this method does not need to be implemented. @@ -299,7 +299,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### run - + Run on the backend. **Parameters** @@ -334,7 +334,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### run\_experiment - + Run an experiment (circuit) and return a single experiment result. **Parameters** @@ -372,7 +372,7 @@ python_api_name: qiskit.providers.basic_provider.BasicSimulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. diff --git a/docs/api/qiskit/dev/qiskit.providers.convert_to_target.mdx b/docs/api/qiskit/dev/qiskit.providers.convert_to_target.mdx index f225e8d31fc..0316a65f4de 100644 --- a/docs/api/qiskit/dev/qiskit.providers.convert_to_target.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.convert_to_target.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.providers.convert_to_target # qiskit.providers.convert\_to\_target - + Decode transpiler target from backend data set. This function generates `` Target` `` instance from intermediate legacy objects such as [`BackendProperties`](qiskit.providers.models.BackendProperties "qiskit.providers.models.BackendProperties") and [`PulseDefaults`](qiskit.providers.models.PulseDefaults "qiskit.providers.models.PulseDefaults"). These objects are usually components of the legacy [`BackendV1`](qiskit.providers.BackendV1 "qiskit.providers.BackendV1") model. diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake127QPulseV1.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake127QPulseV1.mdx index 6be5c0a2bd0..67ebf6972f4 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake127QPulseV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake127QPulseV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.Fake127QPulseV1 # Fake127QPulseV1 - + Bases: [`FakePulseBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakePulseBackend "qiskit.providers.fake_provider.fake_pulse_backend.FakePulseBackend") A fake **pulse** backend with the following characteristics: @@ -68,7 +68,7 @@ python_api_name: qiskit.providers.fake_provider.Fake127QPulseV1 ### configuration - + Return the backend configuration. **Returns** @@ -82,13 +82,13 @@ python_api_name: qiskit.providers.fake_provider.Fake127QPulseV1 ### defaults - + Returns a snapshot of device defaults ### name - + Return the backend name. **Returns** @@ -102,13 +102,13 @@ python_api_name: qiskit.providers.fake_provider.Fake127QPulseV1 ### properties - + Returns a snapshot of device properties ### provider - + Return the backend Provider. **Returns** @@ -122,13 +122,13 @@ python_api_name: qiskit.providers.fake_provider.Fake127QPulseV1 ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -144,7 +144,7 @@ python_api_name: qiskit.providers.fake_provider.Fake127QPulseV1 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake1Q.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake1Q.mdx index 244c1701eb6..692e3d35341 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake1Q.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake1Q.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.Fake1Q # Fake1Q - + Bases: [`FakeBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakeBackend "qiskit.providers.fake_provider.fake_backend.FakeBackend") A fake 1Q backend. @@ -33,7 +33,7 @@ python_api_name: qiskit.providers.fake_provider.Fake1Q ### configuration - + Return the backend configuration. **Returns** @@ -47,7 +47,7 @@ python_api_name: qiskit.providers.fake_provider.Fake1Q ### name - + Return the backend name. **Returns** @@ -61,13 +61,13 @@ python_api_name: qiskit.providers.fake_provider.Fake1Q ### properties - + Return backend properties ### provider - + Return the backend Provider. **Returns** @@ -81,13 +81,13 @@ python_api_name: qiskit.providers.fake_provider.Fake1Q ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -103,7 +103,7 @@ python_api_name: qiskit.providers.fake_provider.Fake1Q ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake20QV1.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake20QV1.mdx index 3c454ec6ccb..f7fc3a56fd8 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake20QV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake20QV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.Fake20QV1 # Fake20QV1 - + Bases: [`FakeQasmBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakeQasmBackend "qiskit.providers.fake_provider.fake_qasm_backend.FakeQasmBackend") A fake backend with the following characteristics: @@ -70,7 +70,7 @@ python_api_name: qiskit.providers.fake_provider.Fake20QV1 ### configuration - + Return the backend configuration. **Returns** @@ -84,7 +84,7 @@ python_api_name: qiskit.providers.fake_provider.Fake20QV1 ### name - + Return the backend name. **Returns** @@ -98,13 +98,13 @@ python_api_name: qiskit.providers.fake_provider.Fake20QV1 ### properties - + Returns a snapshot of device properties ### provider - + Return the backend Provider. **Returns** @@ -118,13 +118,13 @@ python_api_name: qiskit.providers.fake_provider.Fake20QV1 ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -140,7 +140,7 @@ python_api_name: qiskit.providers.fake_provider.Fake20QV1 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake27QPulseV1.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake27QPulseV1.mdx index 0be5e83ca38..31a07b6c238 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake27QPulseV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake27QPulseV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.Fake27QPulseV1 # Fake27QPulseV1 - + Bases: [`FakePulseBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakePulseBackend "qiskit.providers.fake_provider.fake_pulse_backend.FakePulseBackend") A fake **pulse** backend with the following characteristics: @@ -80,7 +80,7 @@ python_api_name: qiskit.providers.fake_provider.Fake27QPulseV1 ### configuration - + Return the backend configuration. **Returns** @@ -94,13 +94,13 @@ python_api_name: qiskit.providers.fake_provider.Fake27QPulseV1 ### defaults - + Returns a snapshot of device defaults ### name - + Return the backend name. **Returns** @@ -114,13 +114,13 @@ python_api_name: qiskit.providers.fake_provider.Fake27QPulseV1 ### properties - + Returns a snapshot of device properties ### provider - + Return the backend Provider. **Returns** @@ -134,13 +134,13 @@ python_api_name: qiskit.providers.fake_provider.Fake27QPulseV1 ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -156,7 +156,7 @@ python_api_name: qiskit.providers.fake_provider.Fake27QPulseV1 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake5QV1.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake5QV1.mdx index bde52880f46..63360eab407 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake5QV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake5QV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.Fake5QV1 # Fake5QV1 - + Bases: [`FakeQasmBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakeQasmBackend "qiskit.providers.fake_provider.fake_qasm_backend.FakeQasmBackend") A fake backend with the following characteristics: @@ -68,7 +68,7 @@ python_api_name: qiskit.providers.fake_provider.Fake5QV1 ### configuration - + Return the backend configuration. **Returns** @@ -82,7 +82,7 @@ python_api_name: qiskit.providers.fake_provider.Fake5QV1 ### name - + Return the backend name. **Returns** @@ -96,13 +96,13 @@ python_api_name: qiskit.providers.fake_provider.Fake5QV1 ### properties - + Returns a snapshot of device properties ### provider - + Return the backend Provider. **Returns** @@ -116,13 +116,13 @@ python_api_name: qiskit.providers.fake_provider.Fake5QV1 ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -138,7 +138,7 @@ python_api_name: qiskit.providers.fake_provider.Fake5QV1 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake7QPulseV1.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake7QPulseV1.mdx index 659990e13b8..b6ab7c8c94f 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake7QPulseV1.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.Fake7QPulseV1.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.Fake7QPulseV1 # Fake7QPulseV1 - + Bases: [`FakePulseBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakePulseBackend "qiskit.providers.fake_provider.fake_pulse_backend.FakePulseBackend") A fake **pulse** backend with the following characteristics: @@ -74,7 +74,7 @@ python_api_name: qiskit.providers.fake_provider.Fake7QPulseV1 ### configuration - + Return the backend configuration. **Returns** @@ -88,13 +88,13 @@ python_api_name: qiskit.providers.fake_provider.Fake7QPulseV1 ### defaults - + Returns a snapshot of device defaults ### name - + Return the backend name. **Returns** @@ -108,13 +108,13 @@ python_api_name: qiskit.providers.fake_provider.Fake7QPulseV1 ### properties - + Returns a snapshot of device properties ### provider - + Return the backend Provider. **Returns** @@ -128,13 +128,13 @@ python_api_name: qiskit.providers.fake_provider.Fake7QPulseV1 ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -150,7 +150,7 @@ python_api_name: qiskit.providers.fake_provider.Fake7QPulseV1 ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse2Q.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse2Q.mdx index 6d3893b2cb4..774bc8f7d6b 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse2Q.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse2Q.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse2Q # FakeOpenPulse2Q - + Bases: [`FakeBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakeBackend "qiskit.providers.fake_provider.fake_backend.FakeBackend") A fake 2 qubit backend for pulse test. @@ -38,7 +38,7 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse2Q ### configuration - + Return the backend configuration. **Returns** @@ -52,13 +52,13 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse2Q ### defaults - + Return the default pulse-related settings provided by the backend (such as gate to Schedule mappings). ### name - + Return the backend name. **Returns** @@ -72,13 +72,13 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse2Q ### properties - + Return the measured characteristics of the backend. ### provider - + Return the backend Provider. **Returns** @@ -92,13 +92,13 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse2Q ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -114,7 +114,7 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse2Q ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse3Q.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse3Q.mdx index 97e46e7d841..85e00512633 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse3Q.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.FakeOpenPulse3Q.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse3Q # FakeOpenPulse3Q - + Bases: [`FakeBackend`](providers_fake_provider#qiskit.providers.fake_provider.FakeBackend "qiskit.providers.fake_provider.fake_backend.FakeBackend") Trivial extension of the FakeOpenPulse2Q. @@ -38,7 +38,7 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse3Q ### configuration - + Return the backend configuration. **Returns** @@ -52,11 +52,11 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse3Q ### defaults - + ### name - + Return the backend name. **Returns** @@ -70,13 +70,13 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse3Q ### properties - + Return backend properties ### provider - + Return the backend Provider. **Returns** @@ -90,13 +90,13 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse3Q ### run - + Main job in simulator ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. @@ -112,7 +112,7 @@ python_api_name: qiskit.providers.fake_provider.FakeOpenPulse3Q ### status - + Return the backend status. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.fake_provider.GenericBackendV2.mdx b/docs/api/qiskit/dev/qiskit.providers.fake_provider.GenericBackendV2.mdx index e67e59e6f6f..73a41989798 100644 --- a/docs/api/qiskit/dev/qiskit.providers.fake_provider.GenericBackendV2.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.fake_provider.GenericBackendV2.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 # GenericBackendV2 - + Bases: [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.backend.BackendV2") Generic [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") implementation with a configurable constructor. This class will return a [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2") instance that runs on a local simulator (in the spirit of fake backends) and contains all the necessary information to test backend-interfacing components, such as the transpiler. A [`GenericBackendV2`](#qiskit.providers.fake_provider.GenericBackendV2 "qiskit.providers.fake_provider.GenericBackendV2") instance can be constructed from as little as a specified `num_qubits`, but users can additionally configure the basis gates, coupling map, ability to run dynamic circuits (control flow instructions), instruction calibrations and dtm. The remainder of the backend properties are generated by randomly sampling from default ranges extracted from historical IBM backend data. The seed for this random generation can be fixed to ensure the reproducibility of the backend output. This backend only supports gates in the standard library, if you need a more flexible backend, there is always the option to directly instantiate a [`Target`](qiskit.transpiler.Target "qiskit.transpiler.Target") object to use for transpilation. @@ -180,7 +180,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### acquire\_channel - + Return the acquisition channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -200,7 +200,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### control\_channel - + Return the secondary drive channel for the given qubit This is typically utilized for controlling multiqubit interactions. This channel is derived from other channels. @@ -226,7 +226,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### drive\_channel - + Return the drive channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -246,7 +246,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### measure\_channel - + Return the measure stimulus channel for the given qubit. This is required to be implemented if the backend supports Pulse scheduling. @@ -266,7 +266,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### qubit\_properties - + Return QubitProperties for a given qubit. If there are no defined or the backend doesn’t support querying these details this method does not need to be implemented. @@ -290,7 +290,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### run - + Run on the backend using a simulator. This method runs circuit jobs (an individual or a list of [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") ) and pulse jobs (an individual or a list of [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") or [`ScheduleBlock`](qiskit.pulse.ScheduleBlock "qiskit.pulse.ScheduleBlock")) using [`BasicSimulator`](qiskit.providers.basic_provider.BasicSimulator "qiskit.providers.basic_provider.BasicSimulator") or Aer simulator and returns a [`Job`](qiskit.providers.Job "qiskit.providers.Job") object. @@ -319,7 +319,7 @@ python_api_name: qiskit.providers.fake_provider.GenericBackendV2 ### set\_options - + Set the options fields for the backend This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options. diff --git a/docs/api/qiskit/dev/qiskit.providers.models.BackendConfiguration.mdx b/docs/api/qiskit/dev/qiskit.providers.models.BackendConfiguration.mdx index 1fd45a584f2..9a0f9679ac8 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.BackendConfiguration.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.BackendConfiguration.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.BackendConfiguration # BackendConfiguration - + Bases: [`QasmBackendConfiguration`](qiskit.providers.models.QasmBackendConfiguration "qiskit.providers.models.backendconfiguration.QasmBackendConfiguration") Backwards compat shim representing an abstract backend configuration. @@ -99,7 +99,7 @@ python_api_name: qiskit.providers.models.BackendConfiguration ### from\_dict - + Create a new GateConfig object from a dictionary. **Parameters** @@ -117,7 +117,7 @@ python_api_name: qiskit.providers.models.BackendConfiguration ### to\_dict - + Return a dictionary format representation of the GateConfig. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.BackendProperties.mdx b/docs/api/qiskit/dev/qiskit.providers.models.BackendProperties.mdx index f1b2b4c64d8..f5f34541409 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.BackendProperties.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.BackendProperties.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.BackendProperties # BackendProperties - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing backend properties @@ -31,19 +31,19 @@ python_api_name: qiskit.providers.models.BackendProperties ### faulty\_gates - + Return a list of faulty gates. ### faulty\_qubits - + Return a list of faulty qubits. ### frequency - + Return the frequency of the given qubit. **Parameters** @@ -61,7 +61,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### from\_dict - + Create a new BackendProperties object from a dictionary. **Parameters** @@ -79,7 +79,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### gate\_error - + Return gate error estimates from backend properties. **Parameters** @@ -98,7 +98,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### gate\_length - + Return the duration of the gate in units of seconds. **Parameters** @@ -117,7 +117,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### gate\_property - + Return the property of the given gate. **Parameters** @@ -141,7 +141,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### is\_gate\_operational - + Return the operational status of the given gate. **Parameters** @@ -160,7 +160,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### is\_qubit\_operational - + Return the operational status of the given qubit. **Parameters** @@ -178,7 +178,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### qubit\_property - + Return the property of the given qubit. **Parameters** @@ -201,7 +201,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### readout\_error - + Return the readout error of the given qubit. **Parameters** @@ -219,7 +219,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### readout\_length - + Return the readout length \[sec] of the given qubit. **Parameters** @@ -237,7 +237,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### t1 - + Return the T1 time of the given qubit. **Parameters** @@ -255,7 +255,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### t2 - + Return the T2 time of the given qubit. **Parameters** @@ -273,7 +273,7 @@ python_api_name: qiskit.providers.models.BackendProperties ### to\_dict - + Return a dictionary format representation of the BackendProperties. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.BackendStatus.mdx b/docs/api/qiskit/dev/qiskit.providers.models.BackendStatus.mdx index 9f08fe8487d..412dfeb9776 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.BackendStatus.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.BackendStatus.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.BackendStatus # BackendStatus - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing Backend Status. @@ -31,7 +31,7 @@ python_api_name: qiskit.providers.models.BackendStatus ### from\_dict - + Create a new BackendStatus object from a dictionary. **Parameters** @@ -49,7 +49,7 @@ python_api_name: qiskit.providers.models.BackendStatus ### to\_dict - + Return a dictionary format representation of the BackendStatus. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.Command.mdx b/docs/api/qiskit/dev/qiskit.providers.models.Command.mdx index 21c9f355f47..727adbccf9f 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.Command.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.Command.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.Command # Command - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing a Command. @@ -32,7 +32,7 @@ python_api_name: qiskit.providers.models.Command ### from\_dict - + Create a new Command object from a dictionary. **Parameters** @@ -50,7 +50,7 @@ python_api_name: qiskit.providers.models.Command ### to\_dict - + Return a dictionary format representation of the Command. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.GateConfig.mdx b/docs/api/qiskit/dev/qiskit.providers.models.GateConfig.mdx index 15de0febcce..5e009a35eda 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.GateConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.GateConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.GateConfig # GateConfig - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing a Gate Configuration @@ -47,7 +47,7 @@ python_api_name: qiskit.providers.models.GateConfig ### from\_dict - + Create a new GateConfig object from a dictionary. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.providers.models.GateConfig ### to\_dict - + Return a dictionary format representation of the GateConfig. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.GateProperties.mdx b/docs/api/qiskit/dev/qiskit.providers.models.GateProperties.mdx index 668c1d51e76..fddc5702810 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.GateProperties.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.GateProperties.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.GateProperties # GateProperties - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing a gate’s properties @@ -44,7 +44,7 @@ python_api_name: qiskit.providers.models.GateProperties ### from\_dict - + Create a new Gate object from a dictionary. **Parameters** @@ -62,7 +62,7 @@ python_api_name: qiskit.providers.models.GateProperties ### to\_dict - + Return a dictionary format representation of the BackendStatus. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.JobStatus.mdx b/docs/api/qiskit/dev/qiskit.providers.models.JobStatus.mdx index a8fd94399b1..dbfbec0e26a 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.JobStatus.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.JobStatus.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.JobStatus # JobStatus - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Model for JobStatus. @@ -47,7 +47,7 @@ python_api_name: qiskit.providers.models.JobStatus ### from\_dict - + Create a new JobStatus object from a dictionary. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.providers.models.JobStatus ### to\_dict - + Return a dictionary format representation of the JobStatus. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.Nduv.mdx b/docs/api/qiskit/dev/qiskit.providers.models.Nduv.mdx index f7b9ae3873d..6e08a8a9933 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.Nduv.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.Nduv.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.Nduv # Nduv - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing name-date-unit-value @@ -50,7 +50,7 @@ python_api_name: qiskit.providers.models.Nduv ### from\_dict - + Create a new Nduv object from a dictionary. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.providers.models.Nduv ### to\_dict - + Return a dictionary format representation of the object. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.PulseBackendConfiguration.mdx b/docs/api/qiskit/dev/qiskit.providers.models.PulseBackendConfiguration.mdx index f91a1d5b4f0..9f41a23f295 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.PulseBackendConfiguration.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.PulseBackendConfiguration.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration # PulseBackendConfiguration - + Bases: [`QasmBackendConfiguration`](qiskit.providers.models.QasmBackendConfiguration "qiskit.providers.models.backendconfiguration.QasmBackendConfiguration") Static configuration state for an OpenPulse enabled backend. This contains information about the set up of the device which can be useful for building Pulse programs. @@ -83,7 +83,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### acquire - + Return the acquisition channel for the given qubit. **Raises** @@ -101,7 +101,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### control - + Return the secondary drive channel for the given qubit – typically utilized for controlling multiqubit interactions. This channel is derived from other channels. **Parameters** @@ -123,7 +123,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### describe - + Return a basic description of the channel dependency. Derived channels are given weights which describe how their frames are linked to other frames. For instance, the backend could be configured with this setting: ```python @@ -159,7 +159,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### drive - + Return the drive channel for the given qubit. **Raises** @@ -177,7 +177,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### from\_dict - + Create a new GateConfig object from a dictionary. **Parameters** @@ -195,7 +195,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### get\_channel\_qubits - + Return a list of indices for qubits which are operated on directly by the given `channel`. **Raises** @@ -213,7 +213,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### get\_qubit\_channels - + Return a list of channels which operate on the given `qubit`. **Raises** @@ -231,7 +231,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### measure - + Return the measure stimulus channel for the given qubit. **Raises** @@ -249,7 +249,7 @@ python_api_name: qiskit.providers.models.PulseBackendConfiguration ### to\_dict - + Return a dictionary format representation of the GateConfig. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.PulseDefaults.mdx b/docs/api/qiskit/dev/qiskit.providers.models.PulseDefaults.mdx index 7c3a74ce9f2..15a7ee15d42 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.PulseDefaults.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.PulseDefaults.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.PulseDefaults # PulseDefaults - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Description of default settings for Pulse systems. These are instructions or settings that may be good starting points for the Pulse user. The user may modify these defaults for custom scheduling. @@ -33,7 +33,7 @@ python_api_name: qiskit.providers.models.PulseDefaults ### from\_dict - + Create a new PulseDefaults object from a dictionary. **Parameters** @@ -51,7 +51,7 @@ python_api_name: qiskit.providers.models.PulseDefaults ### to\_dict - + Return a dictionary format representation of the PulseDefaults. :returns: The dictionary form of the PulseDefaults. :rtype: dict diff --git a/docs/api/qiskit/dev/qiskit.providers.models.QasmBackendConfiguration.mdx b/docs/api/qiskit/dev/qiskit.providers.models.QasmBackendConfiguration.mdx index 0d2652a6978..aff4b183837 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.QasmBackendConfiguration.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.QasmBackendConfiguration.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.QasmBackendConfiguration # QasmBackendConfiguration - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing an OpenQASM 2.0 Backend Configuration. @@ -165,7 +165,7 @@ python_api_name: qiskit.providers.models.QasmBackendConfiguration ### from\_dict - + Create a new GateConfig object from a dictionary. **Parameters** @@ -183,7 +183,7 @@ python_api_name: qiskit.providers.models.QasmBackendConfiguration ### to\_dict - + Return a dictionary format representation of the GateConfig. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.providers.models.UchannelLO.mdx b/docs/api/qiskit/dev/qiskit.providers.models.UchannelLO.mdx index 809f5589eff..eeeb0e24c16 100644 --- a/docs/api/qiskit/dev/qiskit.providers.models.UchannelLO.mdx +++ b/docs/api/qiskit/dev/qiskit.providers.models.UchannelLO.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.providers.models.UchannelLO # UchannelLO - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class representing a U Channel LO @@ -40,7 +40,7 @@ python_api_name: qiskit.providers.models.UchannelLO ### from\_dict - + Create a new UchannelLO object from a dictionary. **Parameters** @@ -58,7 +58,7 @@ python_api_name: qiskit.providers.models.UchannelLO ### to\_dict - + Return a dictionary format representation of the UChannelLO. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.pulse.InstructionScheduleMap.mdx b/docs/api/qiskit/dev/qiskit.pulse.InstructionScheduleMap.mdx index 7f3175b2798..682670074d3 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.InstructionScheduleMap.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.InstructionScheduleMap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap # InstructionScheduleMap - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Mapping from [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") [`qiskit.circuit.Instruction`](qiskit.circuit.Instruction "qiskit.circuit.Instruction") names and qubits to [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") s. In particular, the mapping is formatted as type: @@ -41,7 +41,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### add - + Add a new known instruction for the given qubits and its mapping to a pulse schedule. **Parameters** @@ -58,7 +58,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### assert\_has - + Error if the given instruction is not defined. **Parameters** @@ -73,7 +73,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### get - + Return the defined [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") or [`ScheduleBlock`](qiskit.pulse.ScheduleBlock "qiskit.pulse.ScheduleBlock") for the given instruction on the given qubits. If all keys are not specified this method returns schedule with unbound parameters. @@ -96,7 +96,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### get\_parameters - + Return the list of parameters taken by the given instruction on the given qubits. **Parameters** @@ -115,7 +115,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### has - + Is the instruction defined for the given qubits? **Parameters** @@ -134,7 +134,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### has\_custom\_gate - + Return `True` if the map has user provided instruction. **Return type** @@ -144,7 +144,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### pop - + Remove and return the defined schedule for the given instruction on the given qubits. **Parameters** @@ -165,7 +165,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### qubit\_instructions - + Return a list of the instruction names that are defined by the backend for the given qubit or qubits. **Parameters** @@ -185,7 +185,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### qubits\_with\_instruction - + Return a list of the qubits for which the given instruction is defined. Single qubit instructions return a flat list, and multiqubit instructions return a list of ordered tuples. **Parameters** @@ -207,7 +207,7 @@ python_api_name: qiskit.pulse.InstructionScheduleMap ### remove - + Remove the given instruction from the listing of instructions defined in self. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.Schedule.mdx b/docs/api/qiskit/dev/qiskit.pulse.Schedule.mdx index 01420b1218c..a3c5d3b1d95 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.Schedule.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.Schedule.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.Schedule # Schedule - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A quantum program *schedule* with exact time constraints for its instructions, operating over all input signal *channels* and supporting special syntaxes for building. @@ -148,7 +148,7 @@ python_api_name: qiskit.pulse.Schedule ### append - + Return a new schedule with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. $$ @@ -169,14 +169,14 @@ $$ ### assign\_parameters - + Assign the parameters in this schedule according to the input. **Parameters** - * **value\_dict** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)")*\[*[*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") *|*[*ParameterVector*](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector")*, ParameterValueType | Sequence\[ParameterValueType]]*) – A mapping from parameters (parameter vectors) to either - * **values** (*numeric*) – - * **expression** (*or another Parameter*) – + * **value\_dict** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)")*\[*[*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") *|*[*ParameterVector*](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")*, ParameterValueType | Sequence\[ParameterValueType]]*) – A mapping from parameters or parameter names (parameter vector + * **values** (*or parameter vector name) to either numeric*) – + * **expression** (*or another parameter*) – * **inplace** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Set `True` to override this instance with new parameter. **Returns** @@ -190,7 +190,7 @@ $$ ### ch\_duration - + Return the time of the end of the last instruction over the supplied channels. **Parameters** @@ -204,7 +204,7 @@ $$ ### ch\_start\_time - + Return the time of the start of the first instruction over the supplied channels. **Parameters** @@ -218,7 +218,7 @@ $$ ### ch\_stop\_time - + Return maximum start time over supplied channels. **Parameters** @@ -232,7 +232,7 @@ $$ ### draw - + Plot the schedule. **Parameters** @@ -241,9 +241,9 @@ $$ * **backend** (*Optional\[BaseBackend]*) – Backend object to play the input pulse program. If provided, the plotter may use to make the visualization hardware aware. - * **time\_range** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Set horizontal axis limit. Tuple (tmin, tmax). + * **time\_range** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Set horizontal axis limit. Tuple `(tmin, tmax)`. - * **time\_unit** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – The unit of specified time range either dt or ns. The unit of ns is available only when backend object is provided. + * **time\_unit** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – The unit of specified time range either `dt` or `ns`. The unit of ns is available only when `backend` object is provided. * **disable\_channels** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Channel*](pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")*] | None*) – A control property to show specific pulse channel. Pulse channel instances provided as a list are not shown in the output image. @@ -253,7 +253,7 @@ $$ * **show\_waveform\_info** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show additional information about waveforms such as their name. - * **show\_barrier** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show barrier lines. + * **plot\_barrier** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show barrier lines. * **plotter** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – @@ -269,6 +269,8 @@ $$ * **axis** (*Any | None*) – Arbitrary object passed to the plotter. If this object is provided, the plotters use a given `axis` instead of internally initializing a figure object. This object format depends on the plotter. See plotter argument for details. + * **show\_barrier** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – DEPRECATED. Show barrier lines. + **Returns** Visualization output data. The returned data type depends on the `plotter`. If matplotlib family is specified, this will be a `matplotlib.pyplot.Figure` data. @@ -276,7 +278,7 @@ $$ ### exclude - + Return a `Schedule` with only the instructions from this Schedule *failing* at least one of the provided filters. This method is the complement of py:meth:\~self.filter, so that: ```python @@ -299,7 +301,7 @@ $$ ### filter - + Return a new `Schedule` with only the instructions from this `Schedule` which pass though the provided filters; i.e. an instruction will be retained iff every function in `filter_funcs` returns `True`, the instruction occurs on a channel type contained in `channels`, the instruction type is contained in `instruction_types`, and the period over which the instruction operates is *fully* contained in one specified in `time_ranges` or `intervals`. If no arguments are provided, `self` is returned. @@ -320,7 +322,7 @@ $$ ### get\_parameters - + Get parameter object bound to this schedule by string name. Because different `Parameter` objects can have the same name, this method returns a list of `Parameter` s for the provided name. @@ -340,7 +342,7 @@ $$ ### initialize\_from - + Create new schedule object with metadata of another schedule object. **Parameters** @@ -363,7 +365,7 @@ $$ ### insert - + Return a new schedule with `schedule` inserted into `self` at `start_time`. **Parameters** @@ -380,7 +382,7 @@ $$ ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -390,7 +392,7 @@ $$ ### replace - + Return a `Schedule` with the `old` instruction replaced with a `new` instruction. The replacement matching is based on an instruction equality check. @@ -449,7 +451,7 @@ $$ ### shift - + Return a schedule shifted forward by `time`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.ScheduleBlock.mdx b/docs/api/qiskit/dev/qiskit.pulse.ScheduleBlock.mdx index 39b4fedf1f5..0679f69ac10 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.ScheduleBlock.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.ScheduleBlock.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.ScheduleBlock # ScheduleBlock - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Time-ordered sequence of instructions with alignment context. @@ -200,7 +200,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### append - + Return a new schedule block with `block` appended to the context block. The execution time is automatically assigned when the block is converted into schedule. **Parameters** @@ -224,13 +224,13 @@ python_api_name: qiskit.pulse.ScheduleBlock ### assign\_parameters - + Assign the parameters in this schedule according to the input. **Parameters** - * **value\_dict** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)")*\[*[*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") *|*[*ParameterVector*](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector")*, ParameterValueType | Sequence\[ParameterValueType]]*) – A mapping from parameters (parameter vectors) to either numeric values - * **values**\*\*)\*\* (*(*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)") *of numeric*) – + * **value\_dict** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)")*\[*[*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") *|*[*ParameterVector*](qiskit.circuit.ParameterVector "qiskit.circuit.ParameterVector") *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")*, ParameterValueType | Sequence\[ParameterValueType]]*) – A mapping from parameters or parameter names (parameter vector + * **values** (*or parameter vector name) to either numeric*) – * **expression** (*or another parameter*) – * **inplace** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Set `True` to override this instance with new parameter. @@ -249,7 +249,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### assign\_references - + Assign schedules to references. It is only capable of assigning a schedule block to immediate references which are directly referred within the current scope. Let’s see following example: @@ -307,7 +307,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### ch\_duration - + Return the time of the end of the last instruction over the supplied channels. **Parameters** @@ -321,7 +321,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### draw - + Plot the schedule. **Parameters** @@ -330,9 +330,9 @@ python_api_name: qiskit.pulse.ScheduleBlock * **backend** (*Optional\[BaseBackend]*) – Backend object to play the input pulse program. If provided, the plotter may use to make the visualization hardware aware. - * **time\_range** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Set horizontal axis limit. Tuple (tmin, tmax). + * **time\_range** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Set horizontal axis limit. Tuple `(tmin, tmax)`. - * **time\_unit** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – The unit of specified time range either dt or ns. The unit of ns is available only when backend object is provided. + * **time\_unit** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – The unit of specified time range either `dt` or `ns`. The unit of ns is available only when `backend` object is provided. * **disable\_channels** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*Channel*](pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel")*] | None*) – A control property to show specific pulse channel. Pulse channel instances provided as a list are not shown in the output image. @@ -342,7 +342,7 @@ python_api_name: qiskit.pulse.ScheduleBlock * **show\_waveform\_info** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show additional information about waveforms such as their name. - * **show\_barrier** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show barrier lines. + * **plot\_barrier** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show barrier lines. * **plotter** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – @@ -358,6 +358,8 @@ python_api_name: qiskit.pulse.ScheduleBlock * **axis** (*Any | None*) – Arbitrary object passed to the plotter. If this object is provided, the plotters use a given `axis` instead of internally initializing a figure object. This object format depends on the plotter. See plotter argument for details. + * **show\_barrier** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – DEPRECATED. Show barrier lines. + **Returns** Visualization output data. The returned data type depends on the `plotter`. If matplotlib family is specified, this will be a `matplotlib.pyplot.Figure` data. @@ -365,7 +367,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### exclude - + Return a new `ScheduleBlock` with only the instructions from this `ScheduleBlock` *failing* at least one of the provided filters. This method is the complement of py:meth:\~self.filter, so that: ```python @@ -390,7 +392,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### filter - + Return a new `ScheduleBlock` with only the instructions from this `ScheduleBlock` which pass though the provided filters; i.e. an instruction will be retained if every function in `filter_funcs` returns `True`, the instruction occurs on a channel type contained in `channels`, and the instruction type is contained in `instruction_types`. @@ -413,7 +415,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### get\_parameters - + Get parameter object bound to this schedule by string name. Note that we can define different parameter objects with the same name, because these different objects are identified by their unique uuid. For example, @@ -451,7 +453,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### initialize\_from - + Create new schedule object with metadata of another schedule object. **Parameters** @@ -474,7 +476,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -484,7 +486,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### is\_referenced - + Return True iff the current schedule block contains reference to subroutine. **Return type** @@ -494,7 +496,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### is\_schedulable - + Return `True` if all durations are assigned. **Return type** @@ -504,7 +506,7 @@ python_api_name: qiskit.pulse.ScheduleBlock ### replace - + Return a `ScheduleBlock` with the `old` component replaced with a `new` component. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.AcquireChannel.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.AcquireChannel.mdx index 8030a84299f..522c27c4c8b 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.AcquireChannel.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.AcquireChannel.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.AcquireChannel # AcquireChannel - + Bases: [`Channel`](pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel") Acquire channels are used to collect data. @@ -49,7 +49,7 @@ python_api_name: qiskit.pulse.channels.AcquireChannel ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.ControlChannel.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.ControlChannel.mdx index d1c17051343..b6ea9f08f8e 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.ControlChannel.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.ControlChannel.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.ControlChannel # ControlChannel - + Bases: `PulseChannel` Control channels provide supplementary control over the qubit to the drive channel. These are often associated with multi-qubit gate operations. They may not map trivially to a particular qubit index. @@ -49,7 +49,7 @@ python_api_name: qiskit.pulse.channels.ControlChannel ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.DriveChannel.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.DriveChannel.mdx index 0c47b0c4c85..266a249972c 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.DriveChannel.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.DriveChannel.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.DriveChannel # DriveChannel - + Bases: `PulseChannel` Drive channels transmit signals to qubits which enact gate operations. @@ -49,7 +49,7 @@ python_api_name: qiskit.pulse.channels.DriveChannel ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.MeasureChannel.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.MeasureChannel.mdx index 3e0169051a7..8deb59068da 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.MeasureChannel.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.MeasureChannel.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.MeasureChannel # MeasureChannel - + Bases: `PulseChannel` Measure channels transmit measurement stimulus pulses for readout. @@ -49,7 +49,7 @@ python_api_name: qiskit.pulse.channels.MeasureChannel ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.MemorySlot.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.MemorySlot.mdx index 81429f38681..59b9dbcc61b 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.MemorySlot.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.MemorySlot.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.MemorySlot # MemorySlot - + Bases: `ClassicalIOChannel` Memory slot channels represent classical memory storage. @@ -49,7 +49,7 @@ python_api_name: qiskit.pulse.channels.MemorySlot ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.RegisterSlot.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.RegisterSlot.mdx index 0dbc1b97bdc..5714e46150b 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.RegisterSlot.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.RegisterSlot.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.RegisterSlot # RegisterSlot - + Bases: `ClassicalIOChannel` Classical resister slot channels represent classical registers (low-latency classical memory). @@ -49,7 +49,7 @@ python_api_name: qiskit.pulse.channels.RegisterSlot ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.channels.SnapshotChannel.mdx b/docs/api/qiskit/dev/qiskit.pulse.channels.SnapshotChannel.mdx index c84e2c29819..9d358a5733c 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.channels.SnapshotChannel.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.channels.SnapshotChannel.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.channels.SnapshotChannel # SnapshotChannel - + Bases: `ClassicalIOChannel` Snapshot channels are used to specify instructions for simulators. @@ -45,7 +45,7 @@ python_api_name: qiskit.pulse.channels.SnapshotChannel ### is\_parameterized - + Return True iff the channel is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.Acquire.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.Acquire.mdx index 0ae9d24c6e2..3fd9f907eb8 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.Acquire.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.Acquire.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.Acquire # Acquire - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") The Acquire instruction is used to trigger the ADC associated with a particular qubit; e.g. instantiated with AcquireChannel(0), the Acquire command will trigger data collection for the channel associated with qubit 0 readout. This instruction also provides acquisition metadata: @@ -127,7 +127,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -146,7 +146,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -160,7 +160,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -174,7 +174,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -188,7 +188,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -208,7 +208,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -218,7 +218,7 @@ python_api_name: qiskit.pulse.instructions.Acquire ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.Delay.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.Delay.mdx index 5a4d4bd5448..9b82ca467a3 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.Delay.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.Delay.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.Delay # Delay - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") A blocking instruction with no other effect. The delay is used for aligning and scheduling other instructions. @@ -101,7 +101,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -120,7 +120,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -134,7 +134,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -148,7 +148,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -162,7 +162,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -182,7 +182,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -192,7 +192,7 @@ python_api_name: qiskit.pulse.instructions.Delay ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.Play.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.Play.mdx index 6e1f0b7dab5..50dc7c012da 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.Play.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.Play.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.Play # Play - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") This instruction is responsible for applying a pulse on a channel. @@ -95,7 +95,7 @@ python_api_name: qiskit.pulse.instructions.Play ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -114,7 +114,7 @@ python_api_name: qiskit.pulse.instructions.Play ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -128,7 +128,7 @@ python_api_name: qiskit.pulse.instructions.Play ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -142,7 +142,7 @@ python_api_name: qiskit.pulse.instructions.Play ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -156,7 +156,7 @@ python_api_name: qiskit.pulse.instructions.Play ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -176,7 +176,7 @@ python_api_name: qiskit.pulse.instructions.Play ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -186,7 +186,7 @@ python_api_name: qiskit.pulse.instructions.Play ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.Reference.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.Reference.mdx index 42345584930..fb5daab7b6d 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.Reference.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.Reference.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.Reference # Reference - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") Pulse compiler directive that refers to a subroutine. @@ -100,7 +100,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -119,7 +119,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -133,7 +133,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -147,7 +147,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -161,7 +161,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -181,7 +181,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -191,7 +191,7 @@ python_api_name: qiskit.pulse.instructions.Reference ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.RelativeBarrier.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.RelativeBarrier.mdx index 1e3b4fe9298..f9a6fa4e009 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.RelativeBarrier.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.RelativeBarrier.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier # RelativeBarrier - + Bases: `Directive` Pulse `RelativeBarrier` directive. @@ -82,7 +82,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -101,7 +101,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -115,7 +115,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -129,7 +129,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -143,7 +143,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -163,7 +163,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -173,7 +173,7 @@ python_api_name: qiskit.pulse.instructions.RelativeBarrier ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.SetFrequency.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.SetFrequency.mdx index 0a0d6da671d..112b5c2d973 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.SetFrequency.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.SetFrequency.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.SetFrequency # SetFrequency - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") Set the channel frequency. This instruction operates on `PulseChannel` s. A `PulseChannel` creates pulses of the form @@ -103,7 +103,7 @@ $$ ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -122,7 +122,7 @@ $$ ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -136,7 +136,7 @@ $$ ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -150,7 +150,7 @@ $$ ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -164,7 +164,7 @@ $$ ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -184,7 +184,7 @@ $$ ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -194,7 +194,7 @@ $$ ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.SetPhase.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.SetPhase.mdx index 4982df105f4..3255797db93 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.SetPhase.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.SetPhase.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.SetPhase # SetPhase - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") The set phase instruction sets the phase of the proceeding pulses on that channel to `phase` radians. @@ -101,7 +101,7 @@ $$ ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -120,7 +120,7 @@ $$ ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -134,7 +134,7 @@ $$ ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -148,7 +148,7 @@ $$ ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -162,7 +162,7 @@ $$ ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -182,7 +182,7 @@ $$ ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -192,7 +192,7 @@ $$ ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftFrequency.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftFrequency.mdx index aba88d5c3c6..91f6e4f5f67 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftFrequency.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftFrequency.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency # ShiftFrequency - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") Shift the channel frequency away from the current frequency. @@ -93,7 +93,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -112,7 +112,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -126,7 +126,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -140,7 +140,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -154,7 +154,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -174,7 +174,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -184,7 +184,7 @@ python_api_name: qiskit.pulse.instructions.ShiftFrequency ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftPhase.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftPhase.mdx index 6317d1d7b94..16a07baf5b3 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftPhase.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.ShiftPhase.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.ShiftPhase # ShiftPhase - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") The shift phase instruction updates the modulation phase of proceeding pulses played on the same [`Channel`](pulse#qiskit.pulse.channels.Channel "qiskit.pulse.channels.Channel"). It is a relative increase in phase determined by the `phase` operand. @@ -105,7 +105,7 @@ $$ ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -124,7 +124,7 @@ $$ ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -138,7 +138,7 @@ $$ ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -152,7 +152,7 @@ $$ ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -166,7 +166,7 @@ $$ ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -186,7 +186,7 @@ $$ ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -196,7 +196,7 @@ $$ ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.Snapshot.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.Snapshot.mdx index 9ecbc98bc0c..01ee348eef0 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.Snapshot.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.Snapshot.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot # Snapshot - + Bases: [`Instruction`](pulse#qiskit.pulse.instructions.Instruction "qiskit.pulse.instructions.instruction.Instruction") An instruction targeted for simulators, to capture a moment in the simulation. @@ -99,7 +99,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -118,7 +118,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -132,7 +132,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -146,7 +146,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -160,7 +160,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -180,7 +180,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -190,7 +190,7 @@ python_api_name: qiskit.pulse.instructions.Snapshot ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.instructions.TimeBlockade.mdx b/docs/api/qiskit/dev/qiskit.pulse.instructions.TimeBlockade.mdx index e9f77f746c9..9b01884d12d 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.instructions.TimeBlockade.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.instructions.TimeBlockade.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade # TimeBlockade - + Bases: `Directive` Pulse `TimeBlockade` directive. @@ -118,7 +118,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### append - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted at the maximum time over all channels shared between `self` and `schedule`. **Parameters** @@ -137,7 +137,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### ch\_duration - + Return duration of the supplied channels in this Instruction. **Parameters** @@ -151,7 +151,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### ch\_start\_time - + Return minimum start time for supplied channels. **Parameters** @@ -165,7 +165,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### ch\_stop\_time - + Return maximum start time for supplied channels. **Parameters** @@ -179,7 +179,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### insert - + Return a new [`Schedule`](qiskit.pulse.Schedule "qiskit.pulse.Schedule") with `schedule` inserted within `self` at `start_time`. **Parameters** @@ -199,7 +199,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -209,7 +209,7 @@ python_api_name: qiskit.pulse.instructions.TimeBlockade ### shift - + Return a new schedule shifted forward by time. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Constant_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Constant_class.rst.mdx index e6825855e44..1f6d824e0d5 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Constant_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Constant_class.rst.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.library.Constant # Constant - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A simple constant pulse, with an amplitude value and a duration: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Cos_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Cos_class.rst.mdx index ce5e45c90a9..205de27867c 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Cos_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Cos_class.rst.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.Cos # qiskit.pulse.library.Cos - + A cosine pulse. The envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Drag_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Drag_class.rst.mdx index bce443a25d1..c5b1a8bc897 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Drag_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Drag_class.rst.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.library.Drag # Drag - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") The Derivative Removal by Adiabatic Gate (DRAG) pulse is a standard Gaussian pulse with an additional Gaussian derivative component and lifting applied. diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.GaussianDeriv.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.GaussianDeriv.mdx index 07e8cecc46d..7ea0249af41 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.GaussianDeriv.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.GaussianDeriv.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.GaussianDeriv # qiskit.pulse.library.GaussianDeriv - + An unnormalized Gaussian derivative pulse. The Gaussian function is centered around the halfway point of the pulse, and the envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquare.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquare.mdx index 9ac7684abb0..ed651dbf0ce 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquare.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquare.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.library.GaussianSquare # GaussianSquare - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A square pulse with a Gaussian shaped risefall on both sides lifted such that its first sample is zero. diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquareDrag.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquareDrag.mdx index e3b5ecce883..107f239ebbf 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquareDrag.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.GaussianSquareDrag.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.GaussianSquareDrag # qiskit.pulse.library.GaussianSquareDrag - + A square pulse with a Drag shaped rise and fall This pulse shape is similar to [`GaussianSquare`](qiskit.pulse.library.GaussianSquare "qiskit.pulse.library.GaussianSquare") but uses [`Drag`](qiskit.pulse.library.Drag_class.rst#qiskit.pulse.library.Drag "qiskit.pulse.library.Drag") for its rise and fall instead of [`Gaussian`](qiskit.pulse.library.Gaussian_class.rst#qiskit.pulse.library.Gaussian "qiskit.pulse.library.Gaussian"). The addition of the DRAG component of the rise and fall is sometimes helpful in suppressing the spectral content of the pulse at frequencies near to, but slightly offset from, the fundamental frequency of the drive. When there is a spectator qubit close in frequency to the fundamental frequency, suppressing the drive at the spectator’s frequency can help avoid unwanted excitation of the spectator. diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Gaussian_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Gaussian_class.rst.mdx index 25c1622608d..dba0618e241 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Gaussian_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Gaussian_class.rst.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.library.Gaussian # Gaussian - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A lifted and truncated pulse envelope shaped according to the Gaussian function whose mean is centered at the center of the pulse (duration / 2): diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Sawtooth_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Sawtooth_class.rst.mdx index c21b68af620..73263b02f5f 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Sawtooth_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Sawtooth_class.rst.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.Sawtooth # qiskit.pulse.library.Sawtooth - + A sawtooth pulse. The envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.SechDeriv.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.SechDeriv.mdx index c466d4e9a0b..5d3d5c4f369 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.SechDeriv.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.SechDeriv.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.SechDeriv # qiskit.pulse.library.SechDeriv - + An unnormalized sech derivative pulse. The sech function is centered around the halfway point of the pulse, and the envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Sech_fun.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Sech_fun.rst.mdx index 4224beb0c23..b4839f7d92d 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Sech_fun.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Sech_fun.rst.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.Sech # qiskit.pulse.library.Sech - + An unnormalized sech pulse. The sech function is centered around the halfway point of the pulse, and the envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Sin_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Sin_class.rst.mdx index 8fb42aa609c..5244f517729 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Sin_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Sin_class.rst.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.Sin # qiskit.pulse.library.Sin - + A sinusoidal pulse. The envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Square_fun.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Square_fun.rst.mdx index 013d6619d83..431a2319420 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Square_fun.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Square_fun.rst.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.Square # qiskit.pulse.library.Square - + A square wave pulse. The envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.SymbolicPulse.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.SymbolicPulse.mdx index b34ca70e742..a171c203c5e 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.SymbolicPulse.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.SymbolicPulse.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.library.SymbolicPulse # SymbolicPulse - + Bases: `Pulse` The pulse representation model with parameters and symbolic expressions. @@ -172,7 +172,7 @@ $$ ### draw - + Plot the interpolated envelope of pulse. **Parameters** @@ -208,7 +208,7 @@ $$ ### get\_waveform - + Return a Waveform with samples filled according to the formula that the pulse represents and the parameter values it contains. Since the returned array is a discretized time series of the continuous function, this method uses a midpoint sampler. For `duration`, return: @@ -233,7 +233,7 @@ $$ ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** @@ -243,7 +243,7 @@ $$ ### validate\_parameters - + Validate parameters. **Raises** diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Triangle_class.rst.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Triangle_class.rst.mdx index 9c5794ea2e0..e8cd2fa4428 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Triangle_class.rst.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Triangle_class.rst.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.Triangle # qiskit.pulse.library.Triangle - + A triangle wave pulse. The envelope of the pulse is given by: diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.Waveform.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.Waveform.mdx index 4b433fe8729..f90859213b3 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.Waveform.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.Waveform.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.library.Waveform # Waveform - + Bases: `Pulse` A pulse specified completely by complex-valued samples; each sample is played for the duration of the backend cycle-time, dt. @@ -58,7 +58,7 @@ python_api_name: qiskit.pulse.library.Waveform ### draw - + Plot the interpolated envelope of pulse. **Parameters** @@ -94,7 +94,7 @@ python_api_name: qiskit.pulse.library.Waveform ### is\_parameterized - + Return True iff the instruction is parameterized. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.pulse.library.gaussian_square_echo.mdx b/docs/api/qiskit/dev/qiskit.pulse.library.gaussian_square_echo.mdx index d1226890d2a..8f1946ffd8c 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.library.gaussian_square_echo.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.library.gaussian_square_echo.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.pulse.library.gaussian_square_echo # qiskit.pulse.library.gaussian\_square\_echo - + An echoed Gaussian square pulse with an active tone overlaid on it. The Gaussian Square Echo pulse is composed of three pulses. First, a Gaussian Square pulse $f_{echo}(x)$ with amplitude `amp` and phase `angle` playing for half duration, followed by a second Gaussian Square pulse $-f_{echo}(x)$ with opposite amplitude and same phase playing for the rest of the duration. Third a Gaussian Square pulse $f_{active}(x)$ with amplitude `active_amp` and phase `active_angle` playing for the entire duration. The Gaussian Square Echo pulse $g_e()$ can be written as: diff --git a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignEquispaced.mdx b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignEquispaced.mdx index 0bdbccb6e02..ac12c9147d3 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignEquispaced.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignEquispaced.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.transforms.AlignEquispaced # AlignEquispaced - + Bases: [`AlignmentKind`](pulse#qiskit.pulse.transforms.AlignmentKind "qiskit.pulse.transforms.alignments.AlignmentKind") Align instructions with equispaced interval within a specified duration. @@ -37,7 +37,7 @@ python_api_name: qiskit.pulse.transforms.AlignEquispaced ### align - + Reallocate instructions according to the policy. Only top-level sub-schedules are aligned. If sub-schedules are nested, nested schedules are not recursively aligned. diff --git a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignFunc.mdx b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignFunc.mdx index de9235742da..e307499f9a6 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignFunc.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignFunc.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.transforms.AlignFunc # AlignFunc - + Bases: [`AlignmentKind`](pulse#qiskit.pulse.transforms.AlignmentKind "qiskit.pulse.transforms.alignments.AlignmentKind") Allocate instructions at position specified by callback function. @@ -57,7 +57,7 @@ python_api_name: qiskit.pulse.transforms.AlignFunc ### align - + Reallocate instructions according to the policy. Only top-level sub-schedules are aligned. If sub-schedules are nested, nested schedules are not recursively aligned. diff --git a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignLeft.mdx b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignLeft.mdx index 63f6cc237f4..e9855962148 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignLeft.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignLeft.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.transforms.AlignLeft # AlignLeft - + Bases: [`AlignmentKind`](pulse#qiskit.pulse.transforms.AlignmentKind "qiskit.pulse.transforms.alignments.AlignmentKind") Align instructions in as-soon-as-possible manner. @@ -27,7 +27,7 @@ python_api_name: qiskit.pulse.transforms.AlignLeft ### align - + Reallocate instructions according to the policy. Only top-level sub-schedules are aligned. If sub-schedules are nested, nested schedules are not recursively aligned. diff --git a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignRight.mdx b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignRight.mdx index dfb926a2a65..bd2fd495d2d 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignRight.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignRight.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.transforms.AlignRight # AlignRight - + Bases: [`AlignmentKind`](pulse#qiskit.pulse.transforms.AlignmentKind "qiskit.pulse.transforms.alignments.AlignmentKind") Align instructions in as-late-as-possible manner. @@ -27,7 +27,7 @@ python_api_name: qiskit.pulse.transforms.AlignRight ### align - + Reallocate instructions according to the policy. Only top-level sub-schedules are aligned. If sub-schedules are nested, nested schedules are not recursively aligned. diff --git a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignSequential.mdx b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignSequential.mdx index 7a2232c3620..389bb03bfc4 100644 --- a/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignSequential.mdx +++ b/docs/api/qiskit/dev/qiskit.pulse.transforms.AlignSequential.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.pulse.transforms.AlignSequential # AlignSequential - + Bases: [`AlignmentKind`](pulse#qiskit.pulse.transforms.AlignmentKind "qiskit.pulse.transforms.alignments.AlignmentKind") Align instructions sequentially. @@ -27,7 +27,7 @@ python_api_name: qiskit.pulse.transforms.AlignSequential ### align - + Reallocate instructions according to the policy. Only top-level sub-schedules are aligned. If sub-schedules are nested, nested schedules are not recursively aligned. diff --git a/docs/api/qiskit/dev/qiskit.qobj.GateCalibration.mdx b/docs/api/qiskit/dev/qiskit.qobj.GateCalibration.mdx index e86f9a155bc..dbfab457c63 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.GateCalibration.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.GateCalibration.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.GateCalibration # GateCalibration - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Each calibration specifies a unique gate by name, qubits and params, and contains the Pulse instructions to implement it. @@ -26,7 +26,7 @@ python_api_name: qiskit.qobj.GateCalibration ### from\_dict - + Create a new GateCalibration object from a dictionary. **Parameters** @@ -44,7 +44,7 @@ python_api_name: qiskit.qobj.GateCalibration ### to\_dict - + Return a dictionary format representation of the Gate Calibration. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.PulseLibraryItem.mdx b/docs/api/qiskit/dev/qiskit.qobj.PulseLibraryItem.mdx index 8ad2d9f4d6e..2030e462564 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.PulseLibraryItem.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.PulseLibraryItem.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.PulseLibraryItem # PulseLibraryItem - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") An item in a pulse library. @@ -24,7 +24,7 @@ python_api_name: qiskit.qobj.PulseLibraryItem ### from\_dict - + Create a new PulseLibraryItem object from a dictionary. **Parameters** @@ -42,7 +42,7 @@ python_api_name: qiskit.qobj.PulseLibraryItem ### to\_dict - + Return a dictionary format representation of the pulse library item. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.PulseQobj.mdx b/docs/api/qiskit/dev/qiskit.qobj.PulseQobj.mdx index 37dea1e5906..daed94e2b6a 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.PulseQobj.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.PulseQobj.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.PulseQobj # PulseQobj - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A Pulse Qobj. @@ -28,7 +28,7 @@ python_api_name: qiskit.qobj.PulseQobj ### from\_dict - + Create a new PulseQobj object from a dictionary. **Parameters** @@ -46,7 +46,7 @@ python_api_name: qiskit.qobj.PulseQobj ### to\_dict - + Return a dictionary format representation of the Pulse Qobj. Note this dict is not in the json wire format expected by IBMQ and qobj specification because complex numbers are still of type complex. Also this may contain native numpy arrays. When serializing this output for use with IBMQ you can leverage a json encoder that converts these as expected. For example: diff --git a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjConfig.mdx b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjConfig.mdx index 704195b1459..4c771684cb4 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.PulseQobjConfig # PulseQobjConfig - + Bases: `QobjDictField` A configuration for a Pulse Qobj. @@ -34,7 +34,7 @@ python_api_name: qiskit.qobj.PulseQobjConfig ### from\_dict - + Create a new PulseQobjConfig object from a dictionary. **Parameters** @@ -52,7 +52,7 @@ python_api_name: qiskit.qobj.PulseQobjConfig ### to\_dict - + Return a dictionary format representation of the Pulse Qobj config. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperiment.mdx b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperiment.mdx index 710a77ec6ca..125d4cd1fd0 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperiment.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperiment.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.PulseQobjExperiment # PulseQobjExperiment - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A Pulse Qobj Experiment. @@ -27,7 +27,7 @@ python_api_name: qiskit.qobj.PulseQobjExperiment ### from\_dict - + Create a new PulseQobjExperiment object from a dictionary. **Parameters** @@ -45,7 +45,7 @@ python_api_name: qiskit.qobj.PulseQobjExperiment ### to\_dict - + Return a dictionary format representation of the Experiment. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperimentConfig.mdx b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperimentConfig.mdx index 3989a041c61..8f0adec0d57 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperimentConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjExperimentConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.PulseQobjExperimentConfig # PulseQobjExperimentConfig - + Bases: `QobjDictField` A config for a single Pulse experiment in the qobj. @@ -25,7 +25,7 @@ python_api_name: qiskit.qobj.PulseQobjExperimentConfig ### from\_dict - + Create a new QobjHeader object from a dictionary. **Parameters** @@ -43,7 +43,7 @@ python_api_name: qiskit.qobj.PulseQobjExperimentConfig ### to\_dict - + Return a dictionary format representation of the OpenQASM 2 Qobj. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjInstruction.mdx b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjInstruction.mdx index 76d5519fc3d..848747eda74 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.PulseQobjInstruction.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.PulseQobjInstruction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.PulseQobjInstruction # PulseQobjInstruction - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A class representing a single instruction in an PulseQobj Experiment. @@ -39,7 +39,7 @@ python_api_name: qiskit.qobj.PulseQobjInstruction ### from\_dict - + Create a new PulseQobjExperimentConfig object from a dictionary. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.qobj.PulseQobjInstruction ### to\_dict - + Return a dictionary format representation of the Instruction. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QasmExperimentCalibrations.mdx b/docs/api/qiskit/dev/qiskit.qobj.QasmExperimentCalibrations.mdx index 979abf631e8..fd251f735a4 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QasmExperimentCalibrations.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QasmExperimentCalibrations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QasmExperimentCalibrations # QasmExperimentCalibrations - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A container for any calibrations data. The gates attribute contains a list of GateCalibrations. @@ -23,7 +23,7 @@ python_api_name: qiskit.qobj.QasmExperimentCalibrations ### from\_dict - + Create a new GateCalibration object from a dictionary. **Parameters** @@ -41,7 +41,7 @@ python_api_name: qiskit.qobj.QasmExperimentCalibrations ### to\_dict - + Return a dictionary format representation of the calibrations. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QasmQobj.mdx b/docs/api/qiskit/dev/qiskit.qobj.QasmQobj.mdx index 1b34af01808..456f4458d10 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QasmQobj.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QasmQobj.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QasmQobj # QasmQobj - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") An OpenQASM 2 Qobj. @@ -28,7 +28,7 @@ python_api_name: qiskit.qobj.QasmQobj ### from\_dict - + Create a new QASMQobj object from a dictionary. **Parameters** @@ -46,7 +46,7 @@ python_api_name: qiskit.qobj.QasmQobj ### to\_dict - + Return a dictionary format representation of the OpenQASM 2 Qobj. Note this dict is not in the json wire format expected by IBM and Qobj specification because complex numbers are still of type complex. Also, this may contain native numpy arrays. When serializing this output for use with IBM systems, you can leverage a json encoder that converts these as expected. For example: diff --git a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjConfig.mdx b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjConfig.mdx index 15480afd99e..cb9887e514d 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QasmQobjConfig # QasmQobjConfig - + Bases: [`SimpleNamespace`](https://docs.python.org/3/library/types.html#types.SimpleNamespace "(in Python v3.12)") A configuration for an OpenQASM 2 Qobj. @@ -36,7 +36,7 @@ python_api_name: qiskit.qobj.QasmQobjConfig ### from\_dict - + Create a new QasmQobjConfig object from a dictionary. **Parameters** @@ -54,7 +54,7 @@ python_api_name: qiskit.qobj.QasmQobjConfig ### to\_dict - + Return a dictionary format representation of the OpenQASM 2 Qobj config. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperiment.mdx b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperiment.mdx index e60833af08b..6b3eb1ba84a 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperiment.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperiment.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QasmQobjExperiment # QasmQobjExperiment - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") An OpenQASM 2 Qobj Experiment. @@ -27,7 +27,7 @@ python_api_name: qiskit.qobj.QasmQobjExperiment ### from\_dict - + Create a new QasmQobjExperiment object from a dictionary. **Parameters** @@ -45,7 +45,7 @@ python_api_name: qiskit.qobj.QasmQobjExperiment ### to\_dict - + Return a dictionary format representation of the Experiment. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperimentConfig.mdx b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperimentConfig.mdx index bf92a01c318..ef2628fea23 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperimentConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjExperimentConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QasmQobjExperimentConfig # QasmQobjExperimentConfig - + Bases: `QobjDictField` Configuration for a single OpenQASM 2 experiment in the qobj. @@ -24,7 +24,7 @@ python_api_name: qiskit.qobj.QasmQobjExperimentConfig ### from\_dict - + Create a new QobjHeader object from a dictionary. **Parameters** @@ -42,7 +42,7 @@ python_api_name: qiskit.qobj.QasmQobjExperimentConfig ### to\_dict - + Return a dictionary format representation of the OpenQASM 2 Qobj. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjInstruction.mdx b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjInstruction.mdx index b9c4a4712b5..d06be6e0146 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QasmQobjInstruction.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QasmQobjInstruction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QasmQobjInstruction # QasmQobjInstruction - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A class representing a single instruction in an QasmQobj Experiment. @@ -34,7 +34,7 @@ python_api_name: qiskit.qobj.QasmQobjInstruction ### from\_dict - + Create a new QasmQobjInstruction object from a dictionary. **Parameters** @@ -52,7 +52,7 @@ python_api_name: qiskit.qobj.QasmQobjInstruction ### to\_dict - + Return a dictionary format representation of the Instruction. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QobjExperimentHeader.mdx b/docs/api/qiskit/dev/qiskit.qobj.QobjExperimentHeader.mdx index 23ee168ae6e..599c1d4e685 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QobjExperimentHeader.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QobjExperimentHeader.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QobjExperimentHeader # QobjExperimentHeader - + Bases: [`QobjHeader`](qiskit.qobj.QobjHeader "qiskit.qobj.common.QobjHeader") A class representing a header dictionary for a Qobj Experiment. @@ -23,7 +23,7 @@ python_api_name: qiskit.qobj.QobjExperimentHeader ### from\_dict - + Create a new QobjHeader object from a dictionary. **Parameters** @@ -41,7 +41,7 @@ python_api_name: qiskit.qobj.QobjExperimentHeader ### to\_dict - + Return a dictionary format representation of the OpenQASM 2 Qobj. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QobjHeader.mdx b/docs/api/qiskit/dev/qiskit.qobj.QobjHeader.mdx index 59297244341..0c7d9b52693 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QobjHeader.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QobjHeader.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QobjHeader # QobjHeader - + Bases: `QobjDictField` A class used to represent a dictionary header in Qobj objects. @@ -23,7 +23,7 @@ python_api_name: qiskit.qobj.QobjHeader ### from\_dict - + Create a new QobjHeader object from a dictionary. **Parameters** @@ -41,7 +41,7 @@ python_api_name: qiskit.qobj.QobjHeader ### to\_dict - + Return a dictionary format representation of the OpenQASM 2 Qobj. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.qobj.QobjMeasurementOption.mdx b/docs/api/qiskit/dev/qiskit.qobj.QobjMeasurementOption.mdx index b944ce6578c..2d35efd96f7 100644 --- a/docs/api/qiskit/dev/qiskit.qobj.QobjMeasurementOption.mdx +++ b/docs/api/qiskit/dev/qiskit.qobj.QobjMeasurementOption.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.qobj.QobjMeasurementOption # QobjMeasurementOption - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") An individual measurement option. @@ -24,7 +24,7 @@ python_api_name: qiskit.qobj.QobjMeasurementOption ### from\_dict - + Create a new QobjMeasurementOption object from a dictionary. **Parameters** @@ -42,7 +42,7 @@ python_api_name: qiskit.qobj.QobjMeasurementOption ### to\_dict - + Return a dict format representation of the QobjMeasurementOption. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.CNOTDihedral.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.CNOTDihedral.mdx index a416f28adfb..4f6487c4874 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.CNOTDihedral.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.CNOTDihedral.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.CNOTDihedral # CNOTDihedral - + Bases: `BaseOperator`, `AdjointMixin` An N-qubit operator from the CNOT-Dihedral group. @@ -106,13 +106,13 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### adjoint - + Return the adjoint of the Operator. ### compose - + Return the operator composition with another CNOTDihedral. **Parameters** @@ -142,19 +142,19 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### conjugate - + Return the conjugate of the CNOTDihedral. ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -177,7 +177,7 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### expand - + Return the reverse-order tensor product with another CNOTDihedral. **Parameters** @@ -197,19 +197,19 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### input\_dims - + Return tuple of input dimension for specified subsystems. ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the compose of a operator with itself n times. **Parameters** @@ -231,7 +231,7 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -255,7 +255,7 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### tensor - + Return the tensor product with another CNOTDihedral. **Parameters** @@ -279,7 +279,7 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### to\_circuit - + Return a QuantumCircuit implementing the CNOT-Dihedral element. **Returns** @@ -298,19 +298,19 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### to\_instruction - + Return a Gate instruction implementing the CNOTDihedral object. ### to\_matrix - + Convert operator to Numpy matrix. ### to\_operator - + Convert to an Operator object. **Return type** @@ -320,7 +320,7 @@ python_api_name: qiskit.quantum_info.CNOTDihedral ### transpose - + Return the transpose of the CNOTDihedral. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Chi.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Chi.mdx index aa15578cea8..253851c66cb 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Chi.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Chi.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Chi # Chi - + Bases: `QuantumChannel` Pauli basis Chi-matrix representation of a quantum channel. @@ -87,7 +87,7 @@ $$ ### adjoint - + Return the adjoint quantum channel. @@ -97,7 +97,7 @@ $$ ### compose - + Return the operator composition with another Chi. **Parameters** @@ -127,7 +127,7 @@ $$ ### conjugate - + Return the conjugate quantum channel. @@ -137,13 +137,13 @@ $$ ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -166,7 +166,7 @@ $$ ### expand - + Return the reverse-order tensor product with another Chi. **Parameters** @@ -186,13 +186,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_cp - + Test if Choi-matrix is completely-positive (CP) **Return type** @@ -202,7 +202,7 @@ $$ ### is\_cptp - + Return True if completely-positive trace-preserving (CPTP). **Return type** @@ -212,7 +212,7 @@ $$ ### is\_tp - + Test if a channel is trace-preserving (TP) **Return type** @@ -222,7 +222,7 @@ $$ ### is\_unitary - + Return True if QuantumChannel is a unitary channel. **Return type** @@ -232,13 +232,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the quantum channel. **Parameters** @@ -264,7 +264,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -288,7 +288,7 @@ $$ ### tensor - + Return the tensor product with another Chi. **Parameters** @@ -312,7 +312,7 @@ $$ ### to\_instruction - + Convert to a Kraus or UnitaryGate circuit instruction. If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction. @@ -332,7 +332,7 @@ $$ ### to\_operator - + Try to convert channel to a unitary representation Operator. **Return type** @@ -342,7 +342,7 @@ $$ ### transpose - + Return the transpose quantum channel. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Choi.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Choi.mdx index 7a56b469d5f..21c2b08d352 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Choi.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Choi.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Choi # Choi - + Bases: `QuantumChannel` Choi-matrix representation of a Quantum Channel. @@ -95,7 +95,7 @@ $$ ### adjoint - + Return the adjoint quantum channel. @@ -109,7 +109,7 @@ $$ ### compose - + Return the operator composition with another Choi. **Parameters** @@ -139,7 +139,7 @@ $$ ### conjugate - + Return the conjugate quantum channel. @@ -149,13 +149,13 @@ $$ ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -178,7 +178,7 @@ $$ ### expand - + Return the reverse-order tensor product with another Choi. **Parameters** @@ -198,13 +198,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_cp - + Test if Choi-matrix is completely-positive (CP) **Return type** @@ -214,7 +214,7 @@ $$ ### is\_cptp - + Return True if completely-positive trace-preserving (CPTP). **Return type** @@ -224,7 +224,7 @@ $$ ### is\_tp - + Test if a channel is trace-preserving (TP) **Return type** @@ -234,7 +234,7 @@ $$ ### is\_unitary - + Return True if QuantumChannel is a unitary channel. **Return type** @@ -244,13 +244,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the quantum channel. **Parameters** @@ -276,7 +276,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -300,7 +300,7 @@ $$ ### tensor - + Return the tensor product with another Choi. **Parameters** @@ -324,7 +324,7 @@ $$ ### to\_instruction - + Convert to a Kraus or UnitaryGate circuit instruction. If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction. @@ -344,7 +344,7 @@ $$ ### to\_operator - + Try to convert channel to a unitary representation Operator. **Return type** @@ -354,7 +354,7 @@ $$ ### transpose - + Return the transpose quantum channel. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Clifford.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Clifford.mdx index 53121454d0c..6658400ca23 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Clifford.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Clifford.mdx @@ -8,11 +8,19 @@ python_api_name: qiskit.quantum_info.Clifford # Clifford - + Bases: `BaseOperator`, `AdjointMixin`, [`Operation`](qiskit.circuit.Operation "qiskit.circuit.operation.Operation") An N-qubit unitary operator from the Clifford group. + An N-qubit Clifford operator takes Paulis to Paulis via conjugation (up to a global phase). More precisely, the Clifford group $\mathcal{C}_N$ is defined as + + > $$ + > \mathcal{C}_N = \{ U \in U(2^N) | U \mathcal{P}_N U^{\dagger} = \mathcal{P}_N \} / U(1) + > $$ + > + > where $\mathcal{P}_N$ is the Pauli group on $N$ qubits that is generated by single-qubit Pauli operators, and $U$ is a unitary operator in the unitary group $U(2^N)$ representing operations on $N$ qubits. $\mathcal{C}_N$ is the quotient group by the subgroup of scalar unitary matrices $U(1)$. + **Representation** An *N*-qubit Clifford operator is stored as a length *2N × (2N+1)* boolean tableau using the convention from reference \[1]. @@ -52,7 +60,7 @@ python_api_name: qiskit.quantum_info.Clifford **Circuit Conversion** - Clifford operators can be initialized from circuits containing *only* the following Clifford gates: [`IGate`](qiskit.circuit.library.IGate "qiskit.circuit.library.IGate"), [`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"), [`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate"), [`SdgGate`](qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate"), [`SXGate`](qiskit.circuit.library.SXGate "qiskit.circuit.library.SXGate"), [`SXdgGate`](qiskit.circuit.library.SXdgGate "qiskit.circuit.library.SXdgGate"), [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate"), [`CZGate`](qiskit.circuit.library.CZGate "qiskit.circuit.library.CZGate"), [`CYGate`](qiskit.circuit.library.CYGate "qiskit.circuit.library.CYGate"), `DXGate`, [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate"), [`iSwapGate`](qiskit.circuit.library.iSwapGate "qiskit.circuit.library.iSwapGate"), [`ECRGate`](qiskit.circuit.library.ECRGate "qiskit.circuit.library.ECRGate"), [`LinearFunction`](qiskit.circuit.library.LinearFunction "qiskit.circuit.library.LinearFunction"), [`PermutationGate`](qiskit.circuit.library.PermutationGate "qiskit.circuit.library.PermutationGate"). They can be converted back into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"), or [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate") object using the [`to_circuit()`](#qiskit.quantum_info.Clifford.to_circuit "qiskit.quantum_info.Clifford.to_circuit") or [`to_instruction()`](#qiskit.quantum_info.Clifford.to_instruction "qiskit.quantum_info.Clifford.to_instruction") methods respectively. Note that this decomposition is not necessarily optimal in terms of number of gates. + Clifford operators can be initialized from circuits containing *only* the following Clifford gates: [`IGate`](qiskit.circuit.library.IGate "qiskit.circuit.library.IGate"), [`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"), [`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate"), [`SdgGate`](qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate"), [`SXGate`](qiskit.circuit.library.SXGate "qiskit.circuit.library.SXGate"), [`SXdgGate`](qiskit.circuit.library.SXdgGate "qiskit.circuit.library.SXdgGate"), [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate"), [`CZGate`](qiskit.circuit.library.CZGate "qiskit.circuit.library.CZGate"), [`CYGate`](qiskit.circuit.library.CYGate "qiskit.circuit.library.CYGate"), [`DCXGate`](qiskit.circuit.library.DCXGate "qiskit.circuit.library.DCXGate"), [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate"), [`iSwapGate`](qiskit.circuit.library.iSwapGate "qiskit.circuit.library.iSwapGate"), [`ECRGate`](qiskit.circuit.library.ECRGate "qiskit.circuit.library.ECRGate"), [`LinearFunction`](qiskit.circuit.library.LinearFunction "qiskit.circuit.library.LinearFunction"), [`PermutationGate`](qiskit.circuit.library.PermutationGate "qiskit.circuit.library.PermutationGate"). They can be converted back into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"), or [`Gate`](qiskit.circuit.Gate "qiskit.circuit.Gate") object using the [`to_circuit()`](#qiskit.quantum_info.Clifford.to_circuit "qiskit.quantum_info.Clifford.to_circuit") or [`to_instruction()`](#qiskit.quantum_info.Clifford.to_instruction "qiskit.quantum_info.Clifford.to_instruction") methods respectively. Note that this decomposition is not necessarily optimal in terms of number of gates. A minimally generating set of gates for Clifford circuits is the [`HGate`](qiskit.circuit.library.HGate "qiskit.circuit.library.HGate") and [`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate") gate and *either* the [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate") or [`CZGate`](qiskit.circuit.library.CZGate "qiskit.circuit.library.CZGate") two-qubit gate. @@ -174,13 +182,13 @@ python_api_name: qiskit.quantum_info.Clifford ### adjoint - + Return the adjoint of the Operator. ### compose - + Return the operator composition with another Clifford. **Parameters** @@ -210,19 +218,19 @@ python_api_name: qiskit.quantum_info.Clifford ### conjugate - + Return the conjugate of the Clifford. ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -245,7 +253,7 @@ python_api_name: qiskit.quantum_info.Clifford ### expand - + Return the reverse-order tensor product with another Clifford. **Parameters** @@ -265,7 +273,7 @@ python_api_name: qiskit.quantum_info.Clifford ### from\_circuit - + Initialize from a QuantumCircuit or Instruction. **Parameters** @@ -287,13 +295,13 @@ python_api_name: qiskit.quantum_info.Clifford ### from\_dict - + Load a Clifford from a dictionary ### from\_label - + Return a tensor product of single-qubit Clifford gates. **Parameters** @@ -341,7 +349,7 @@ python_api_name: qiskit.quantum_info.Clifford ### from\_linear\_function - + Create a Clifford from a Linear Function. If the linear function is represented by a nxn binary invertible matrix A, then the corresponding Clifford has symplectic matrix \[\[A^t, 0], \[0, A^\{-1}]]. @@ -361,7 +369,7 @@ python_api_name: qiskit.quantum_info.Clifford ### from\_matrix - + Create a Clifford from a unitary matrix. Note that this function takes exponentially long time w\.r.t. the number of qubits. @@ -385,7 +393,7 @@ python_api_name: qiskit.quantum_info.Clifford ### from\_operator - + Create a Clifford from a operator. Note that this function takes exponentially long time w\.r.t. the number of qubits. @@ -409,7 +417,7 @@ python_api_name: qiskit.quantum_info.Clifford ### from\_permutation - + Create a Clifford from a PermutationGate. **Parameters** @@ -427,25 +435,25 @@ python_api_name: qiskit.quantum_info.Clifford ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_unitary - + Return True if the Clifford table is valid. ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the compose of a operator with itself n times. **Parameters** @@ -467,7 +475,7 @@ python_api_name: qiskit.quantum_info.Clifford ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -491,7 +499,7 @@ python_api_name: qiskit.quantum_info.Clifford ### tensor - + Return the tensor product with another Clifford. **Parameters** @@ -515,7 +523,7 @@ python_api_name: qiskit.quantum_info.Clifford ### to\_circuit - + Return a QuantumCircuit implementing the Clifford. For N \<= 3 qubits this is based on optimal CX cost decomposition from reference \[1]. For N > 3 qubits this is done using the general non-optimal compilation routine from reference \[2]. @@ -536,19 +544,19 @@ python_api_name: qiskit.quantum_info.Clifford ### to\_dict - + Return dictionary representation of Clifford object. ### to\_instruction - + Return a Gate instruction implementing the Clifford. ### to\_labels - + Convert a Clifford to a list Pauli (de)stabilizer string labels. For large Clifford converting using the `array=True` kwarg will be more efficient since it allocates memory for the full Numpy array of labels in advance. @@ -584,13 +592,13 @@ python_api_name: qiskit.quantum_info.Clifford ### to\_matrix - + Convert operator to Numpy matrix. ### to\_operator - + Convert to an Operator object. **Return type** @@ -600,7 +608,7 @@ python_api_name: qiskit.quantum_info.Clifford ### transpose - + Return the transpose of the Clifford. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.DensityMatrix.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.DensityMatrix.mdx index cf93ce052e2..1abe197c014 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.DensityMatrix.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.DensityMatrix.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix # DensityMatrix - + Bases: `QuantumState`, `TolerancesMixin` DensityMatrix class @@ -69,25 +69,25 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### conjugate - + Return the conjugate of the density matrix. ### copy - + Make a copy of current operator. ### dims - + Return tuple of input dimension for specified subsystems. ### draw - + Return a visualization of the Statevector. **repr**: ASCII TextMatrix of the state’s `__repr__`. @@ -120,7 +120,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### evolve - + Evolve a quantum state by an operator. **Parameters** @@ -143,7 +143,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### expand - + Return the tensor product state other ⊗ self. **Parameters** @@ -165,7 +165,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### expectation\_value - + Compute the expectation value of an operator. **Parameters** @@ -184,7 +184,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### from\_instruction - + Return the output density matrix of an instruction. The statevector is initialized in the state $|{0,\ldots,0}\rangle$ of the same number of qubits as the input instruction or circuit, evolved by the input instruction, and the output statevector returned. @@ -208,7 +208,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### from\_int - + Return a computational basis state density matrix. **Parameters** @@ -234,7 +234,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### from\_label - + Return a tensor product of Pauli X,Y,Z eigenstates. | Label | Statevector | @@ -265,13 +265,13 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### is\_valid - + Return True if trace 1 and positive semidefinite. ### measure - + Measure subsystems and return outcome and post-measure state. Note that this function uses the QuantumStates internal random number generator for sampling the measurement outcome. The RNG seed can be set using the [`seed()`](#qiskit.quantum_info.DensityMatrix.seed "qiskit.quantum_info.DensityMatrix.seed") method. @@ -293,7 +293,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### partial\_transpose - + Return partially transposed density matrix. **Parameters** @@ -311,7 +311,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### probabilities - + Return the subsystem measurement probability vector. Measurement probabilities are with respect to measurement in the computation (diagonal) basis. @@ -382,7 +382,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### probabilities\_dict - + Return the subsystem measurement probability dictionary. Measurement probabilities are with respect to measurement in the computation (diagonal) basis. @@ -405,13 +405,13 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### purity - + Return the purity of the quantum state. ### reset - + Reset state or subsystems to the 0-state. **Parameters** @@ -433,7 +433,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### reverse\_qargs - + Return a DensityMatrix with reversed subsystem ordering. For a tensor product state this is equivalent to reversing the order of tensor product subsystems. For a density matrix $\rho = \rho_{n-1} \otimes ... \otimes \rho_0$ the returned state will be $\rho_0 \otimes ... \otimes \rho_{n-1}$. @@ -449,7 +449,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### sample\_counts - + Sample a dict of qubit measurement outcomes in the computational basis. **Parameters** @@ -474,7 +474,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### sample\_memory - + Sample a list of qubit measurement outcomes in the computational basis. **Parameters** @@ -499,13 +499,13 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### seed - + Set the seed for the quantum state RNG. ### tensor - + Return the tensor product state self ⊗ other. **Parameters** @@ -527,7 +527,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### to\_dict - + Convert the density matrix to dictionary form. This dictionary representation uses a Ket-like notation where the dictionary keys are qudit strings for the subsystem basis vectors. If any subsystem has a dimension greater than 10 comma delimiters are inserted between integers so that subsystems can be distinguished. @@ -603,7 +603,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### to\_operator - + Convert to Operator **Return type** @@ -613,7 +613,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### to\_statevector - + Return a statevector from a pure density matrix. **Parameters** @@ -638,7 +638,7 @@ python_api_name: qiskit.quantum_info.DensityMatrix ### trace - + Return the trace of the density matrix. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Kraus.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Kraus.mdx index 1c0c539a97c..c57952f87af 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Kraus.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Kraus.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Kraus # Kraus - + Bases: `QuantumChannel` Kraus representation of a quantum channel. @@ -91,7 +91,7 @@ $$ ### adjoint - + Return the adjoint quantum channel. @@ -101,7 +101,7 @@ $$ ### compose - + Return the operator composition with another Kraus. **Parameters** @@ -131,7 +131,7 @@ $$ ### conjugate - + Return the conjugate quantum channel. @@ -141,13 +141,13 @@ $$ ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -170,7 +170,7 @@ $$ ### expand - + Return the reverse-order tensor product with another Kraus. **Parameters** @@ -190,13 +190,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_cp - + Test if Choi-matrix is completely-positive (CP) **Return type** @@ -206,13 +206,13 @@ $$ ### is\_cptp - + Return True if completely-positive trace-preserving. ### is\_tp - + Test if a channel is trace-preserving (TP) **Return type** @@ -222,7 +222,7 @@ $$ ### is\_unitary - + Return True if QuantumChannel is a unitary channel. **Return type** @@ -232,13 +232,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the quantum channel. **Parameters** @@ -264,7 +264,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -288,7 +288,7 @@ $$ ### tensor - + Return the tensor product with another Kraus. **Parameters** @@ -312,7 +312,7 @@ $$ ### to\_instruction - + Convert to a Kraus or UnitaryGate circuit instruction. If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction. @@ -332,7 +332,7 @@ $$ ### to\_operator - + Try to convert channel to a unitary representation Operator. **Return type** @@ -342,7 +342,7 @@ $$ ### transpose - + Return the transpose quantum channel. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Operator.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Operator.mdx index 819cfc4864f..51d99766495 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Operator.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Operator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Operator # Operator - + Bases: `LinearOp` Matrix operator class @@ -39,7 +39,7 @@ $$ **Additional Information:** - If the input or output dimensions are None, they will be automatically determined from the input data. If the input data is a Numpy array of shape (2\*\*N, 2\*\*N) qubit systems will be used. If the input operator is not an N-qubit operator, it will assign a single subsystem with dimension specified by the shape of the input. + If the input or output dimensions are None, they will be automatically determined from the input data. If the input data is a Numpy array of shape (2\*\*N, 2\*\*N) qubit systems will be used. If the input operator is not an N-qubit operator, it will assign a single subsystem with dimension specified by the shape of the input. Note that two operators initialized via this method are only considered equivalent if they match up to their canonical qubit order (or: permutation). See [`Operator.from_circuit()`](#qiskit.quantum_info.Operator.from_circuit "qiskit.quantum_info.Operator.from_circuit") to specify a different qubit permutation. ## Attributes @@ -85,7 +85,7 @@ $$ ### adjoint - + Return the adjoint of the Operator. **Return type** @@ -95,7 +95,7 @@ $$ ### apply\_permutation - + Modifies operator’s data by composing it with a permutation. **Parameters** @@ -118,7 +118,7 @@ $$ ### compose - + Return the operator composition with another Operator. **Parameters** @@ -148,19 +148,19 @@ $$ ### conjugate - + Return the conjugate of the Operator. ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -183,7 +183,7 @@ $$ ### draw - + Return a visualization of the Operator. **repr**: String of the state’s `__repr__`. @@ -214,7 +214,7 @@ $$ ### equiv - + Return True if operators are equivalent up to global phase. **Parameters** @@ -234,7 +234,7 @@ $$ ### expand - + Return the reverse-order tensor product with another Operator. **Parameters** @@ -254,7 +254,7 @@ $$ ### from\_circuit - + Create a new Operator object from a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") While a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") object can passed directly as `data` to the class constructor this provides no options on how the circuit is used to create an [`Operator`](#qiskit.quantum_info.Operator "qiskit.quantum_info.Operator"). This constructor method lets you control how the [`Operator`](#qiskit.quantum_info.Operator "qiskit.quantum_info.Operator") is created so it can be adjusted for a particular use case. @@ -279,7 +279,7 @@ $$ ### from\_label - + Return a tensor product of single-qubit operators. **Parameters** @@ -305,25 +305,25 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_unitary - + Return True if operator is a unitary matrix. ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the matrix power of the operator. **Parameters** @@ -345,7 +345,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -369,7 +369,7 @@ $$ ### reverse\_qargs - + Return an Operator with reversed subsystem ordering. For a tensor product operator this is equivalent to reversing the order of tensor product subsystems. For an operator $A = A_{n-1} \otimes ... \otimes A_0$ the returned operator will be $A_0 \otimes ... \otimes A_{n-1}$. @@ -385,7 +385,7 @@ $$ ### tensor - + Return the tensor product with another Operator. **Parameters** @@ -409,19 +409,19 @@ $$ ### to\_instruction - + Convert to a UnitaryGate instruction. ### to\_matrix - + Convert operator to NumPy matrix. ### to\_operator - + Convert operator to matrix operator class **Return type** @@ -431,7 +431,7 @@ $$ ### transpose - + Return the transpose of the Operator. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.PTM.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.PTM.mdx index 7a4230ed148..e613a1dedce 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.PTM.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.PTM.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.PTM # PTM - + Bases: `QuantumChannel` Pauli Transfer Matrix (PTM) representation of a Quantum Channel. @@ -95,7 +95,7 @@ $$ ### adjoint - + Return the adjoint quantum channel. @@ -105,7 +105,7 @@ $$ ### compose - + Return the operator composition with another PTM. **Parameters** @@ -135,7 +135,7 @@ $$ ### conjugate - + Return the conjugate quantum channel. @@ -145,13 +145,13 @@ $$ ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -174,7 +174,7 @@ $$ ### expand - + Return the reverse-order tensor product with another PTM. **Parameters** @@ -194,13 +194,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_cp - + Test if Choi-matrix is completely-positive (CP) **Return type** @@ -210,7 +210,7 @@ $$ ### is\_cptp - + Return True if completely-positive trace-preserving (CPTP). **Return type** @@ -220,7 +220,7 @@ $$ ### is\_tp - + Test if a channel is trace-preserving (TP) **Return type** @@ -230,7 +230,7 @@ $$ ### is\_unitary - + Return True if QuantumChannel is a unitary channel. **Return type** @@ -240,13 +240,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the quantum channel. **Parameters** @@ -272,7 +272,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -296,7 +296,7 @@ $$ ### tensor - + Return the tensor product with another PTM. **Parameters** @@ -320,7 +320,7 @@ $$ ### to\_instruction - + Convert to a Kraus or UnitaryGate circuit instruction. If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction. @@ -340,7 +340,7 @@ $$ ### to\_operator - + Try to convert channel to a unitary representation Operator. **Return type** @@ -350,7 +350,7 @@ $$ ### transpose - + Return the transpose quantum channel. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Pauli.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Pauli.mdx index 555b6cee119..9e59b0267c1 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Pauli.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Pauli.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Pauli # Pauli - + Bases: `BasePauli` N-qubit Pauli operator. @@ -169,13 +169,13 @@ $$ ### adjoint - + Return the adjoint of the Operator. ### anticommutes - + Return True if other Pauli anticommutes with self. **Parameters** @@ -192,9 +192,28 @@ $$ [bool](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") + ### apply\_layout + + + Apply a transpiler layout to this [`Pauli`](#qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli") + + **Parameters** + + * **layout** ([*TranspileLayout*](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") *|*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Either a [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout"), a list of integers or None. If both layout and num\_qubits are none, a copy of the operator is returned. + * **num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") *| None*) – The number of qubits to expand the operator to. If not provided then if `layout` is a [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") the number of the transpiler output circuit qubits will be used by default. If `layout` is a list of integers the permutation specified will be applied without any expansion. If layout is None, the operator will be expanded to the given number of qubits. + + **Returns** + + A new [`Pauli`](#qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli") with the provided layout applied + + **Return type** + + [Pauli](#qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli") + + ### commutes - + Return True if the Pauli commutes with other. **Parameters** @@ -213,7 +232,7 @@ $$ ### compose - + Return the operator composition with another Pauli. **Parameters** @@ -244,19 +263,19 @@ $$ ### conjugate - + Return the conjugate of each Pauli in the list. ### copy - + Make a deep copy of current operator. ### delete - + Return a Pauli with qubits deleted. **Parameters** @@ -278,7 +297,7 @@ $$ ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -298,7 +317,7 @@ $$ ### equiv - + Return True if Pauli’s are equivalent up to group phase. **Parameters** @@ -316,7 +335,7 @@ $$ ### evolve - + Performs either Heisenberg (default) or Schrödinger picture evolution of the Pauli by a Clifford and returns the evolved Pauli. Schrödinger picture evolution can be chosen by passing parameter `frame='s'`. This option yields a faster calculation. @@ -347,7 +366,7 @@ $$ ### expand - + Return the reverse-order tensor product with another Pauli. **Parameters** @@ -367,13 +386,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### insert - + Insert a Pauli at specific qubit value. **Parameters** @@ -396,19 +415,19 @@ $$ ### inverse - + Return the inverse of the Pauli. ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the compose of a operator with itself n times. **Parameters** @@ -430,7 +449,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -454,7 +473,7 @@ $$ ### set\_truncation - + Set the max number of Pauli characters to display before truncation/ **Parameters** @@ -468,7 +487,7 @@ $$ ### tensor - + Return the tensor product with another Pauli. **Parameters** @@ -492,13 +511,13 @@ $$ ### to\_instruction - + Convert to Pauli circuit instruction. ### to\_label - + Convert a Pauli to a string label. @@ -516,7 +535,7 @@ $$ ### to\_matrix - + Convert to a Numpy array or sparse CSR matrix. **Parameters** @@ -534,7 +553,7 @@ $$ ### transpose - + Return the transpose of each Pauli in the list. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.PauliList.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.PauliList.mdx index 37737a92ce6..d0eb3f0c9bd 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.PauliList.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.PauliList.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.PauliList # PauliList - + Bases: `BasePauli`, `LinearMixin`, `GroupMixin` List of N-qubit Pauli operators. @@ -161,13 +161,13 @@ python_api_name: qiskit.quantum_info.PauliList ### adjoint - + Return the adjoint of each Pauli in the list. ### anticommutes - + Return `True` if other Pauli that anticommutes with other. **Parameters** @@ -186,7 +186,7 @@ python_api_name: qiskit.quantum_info.PauliList ### anticommutes\_with\_all - + Return indexes of rows that commute other. If `other` is a multi-row Pauli list the returned vector indexes rows of the current PauliList that anti-commute with *all* Paulis in other. If no rows satisfy the condition the returned array will be empty. @@ -206,7 +206,7 @@ python_api_name: qiskit.quantum_info.PauliList ### argsort - + Return indices for sorting the rows of the table. The default sort method is lexicographic sorting by qubit number. By using the weight kwarg the output can additionally be sorted by the number of non-identity terms in the Pauli, where the set of all Paulis of a given weight are still ordered lexicographically. @@ -227,7 +227,7 @@ python_api_name: qiskit.quantum_info.PauliList ### commutes - + Return True for each Pauli that commutes with other. **Parameters** @@ -246,7 +246,7 @@ python_api_name: qiskit.quantum_info.PauliList ### commutes\_with\_all - + Return indexes of rows that commute `other`. If `other` is a multi-row Pauli list the returned vector indexes rows of the current PauliList that commute with *all* Paulis in other. If no rows satisfy the condition the returned array will be empty. @@ -266,7 +266,7 @@ python_api_name: qiskit.quantum_info.PauliList ### compose - + Return the composition self∘other for each Pauli in the list. **Parameters** @@ -291,19 +291,19 @@ python_api_name: qiskit.quantum_info.PauliList ### conjugate - + Return the conjugate of each Pauli in the list. ### copy - + Make a deep copy of current operator. ### delete - + Return a copy with Pauli rows deleted from table. When deleting qubits the qubit index is the same as the column index of the underlying `X` and `Z` arrays. @@ -328,7 +328,7 @@ python_api_name: qiskit.quantum_info.PauliList ### dot - + Return the composition other∘self for each Pauli in the list. **Parameters** @@ -352,7 +352,7 @@ python_api_name: qiskit.quantum_info.PauliList ### equiv - + Entrywise comparison of Pauli equivalence up to global phase. **Parameters** @@ -372,7 +372,7 @@ python_api_name: qiskit.quantum_info.PauliList ### evolve - + Performs either Heisenberg (default) or Schrödinger picture evolution of the Pauli by a Clifford and returns the evolved Pauli. Schrödinger picture evolution can be chosen by passing parameter `frame='s'`. This option yields a faster calculation. @@ -402,7 +402,7 @@ python_api_name: qiskit.quantum_info.PauliList ### expand - + Return the expand product of each Pauli in the list. **Parameters** @@ -424,7 +424,7 @@ python_api_name: qiskit.quantum_info.PauliList ### from\_symplectic - + Construct a PauliList from a symplectic data. **Parameters** @@ -444,7 +444,7 @@ python_api_name: qiskit.quantum_info.PauliList ### group\_commuting - + Partition a PauliList into sets of commuting Pauli strings. **Parameters** @@ -473,7 +473,7 @@ python_api_name: qiskit.quantum_info.PauliList ### group\_qubit\_wise\_commuting - + Partition a PauliList into sets of mutually qubit-wise commuting Pauli strings. **Returns** @@ -487,13 +487,13 @@ python_api_name: qiskit.quantum_info.PauliList ### input\_dims - + Return tuple of input dimension for specified subsystems. ### insert - + Insert Paulis into the table. When inserting qubits the qubit index is the same as the column index of the underlying `X` and `Z` arrays. @@ -519,13 +519,13 @@ python_api_name: qiskit.quantum_info.PauliList ### inverse - + Return the inverse of each Pauli in the list. ### label\_iter - + Return a label representation iterator. This is a lazy iterator that converts each row into the string label only as it is used. To convert the entire table to labels use the [`to_labels()`](#qiskit.quantum_info.PauliList.to_labels "qiskit.quantum_info.PauliList.to_labels") method. @@ -541,7 +541,7 @@ python_api_name: qiskit.quantum_info.PauliList ### matrix\_iter - + Return a matrix representation iterator. This is a lazy iterator that converts each row into the Pauli matrix representation only as it is used. To convert the entire table to matrices use the [`to_matrix()`](#qiskit.quantum_info.PauliList.to_matrix "qiskit.quantum_info.PauliList.to_matrix") method. @@ -561,7 +561,7 @@ python_api_name: qiskit.quantum_info.PauliList ### noncommutation\_graph - + Create the non-commutation graph of this PauliList. This transforms the measurement operator grouping problem into graph coloring problem. The constructed graph contains one node for each Pauli. The nodes will be connecting for any two Pauli terms that do \_not\_ commute. @@ -583,13 +583,13 @@ python_api_name: qiskit.quantum_info.PauliList ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the compose of a operator with itself n times. **Parameters** @@ -611,7 +611,7 @@ python_api_name: qiskit.quantum_info.PauliList ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -635,7 +635,7 @@ python_api_name: qiskit.quantum_info.PauliList ### sort - + Sort the rows of the table. The default sort method is lexicographic sorting by qubit number. By using the weight kwarg the output can additionally be sorted by the number of non-identity terms in the Pauli, where the set of all Paulis of a given weight are still ordered lexicographically. @@ -696,7 +696,7 @@ python_api_name: qiskit.quantum_info.PauliList ### tensor - + Return the tensor product with each Pauli in the list. **Parameters** @@ -718,7 +718,7 @@ python_api_name: qiskit.quantum_info.PauliList ### to\_labels - + Convert a PauliList to a list Pauli string labels. For large PauliLists converting using the `array=True` kwarg will be more efficient since it allocates memory for the full Numpy array of labels in advance. @@ -745,7 +745,7 @@ python_api_name: qiskit.quantum_info.PauliList ### to\_matrix - + Convert to a list or array of Pauli matrices. For large PauliLists converting using the `array=True` kwarg will be more efficient since it allocates memory a full rank-3 Numpy array of matrices in advance. @@ -773,13 +773,13 @@ python_api_name: qiskit.quantum_info.PauliList ### transpose - + Return the transpose of each Pauli in the list. ### unique - + Return unique Paulis from the table. **Example** diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Quaternion.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Quaternion.mdx index 4a6eab6c917..ac72d76e95f 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Quaternion.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Quaternion.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Quaternion # Quaternion - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A class representing a Quaternion. @@ -17,7 +17,7 @@ python_api_name: qiskit.quantum_info.Quaternion ### from\_axis\_rotation - + Return quaternion for rotation about given axis. **Parameters** @@ -40,7 +40,7 @@ python_api_name: qiskit.quantum_info.Quaternion ### from\_euler - + Generate a quaternion from a set of Euler angles. **Parameters** @@ -59,13 +59,13 @@ python_api_name: qiskit.quantum_info.Quaternion ### norm - + Norm of quaternion. ### normalize - + Normalizes a Quaternion to unit length so that it represents a valid rotation. **Parameters** @@ -83,7 +83,7 @@ python_api_name: qiskit.quantum_info.Quaternion ### to\_matrix - + Converts a unit-length quaternion to a rotation matrix. **Returns** @@ -97,7 +97,7 @@ python_api_name: qiskit.quantum_info.Quaternion ### to\_zyz - + Converts a unit-length quaternion to a sequence of ZYZ Euler angles. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.ScalarOp.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.ScalarOp.mdx index 588980a0749..d61dc1e72aa 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.ScalarOp.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.ScalarOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.ScalarOp # ScalarOp - + Bases: `LinearOp` Scalar identity operator class. @@ -64,7 +64,7 @@ python_api_name: qiskit.quantum_info.ScalarOp ### adjoint - + Return the adjoint of the Operator. **Return type** @@ -74,7 +74,7 @@ python_api_name: qiskit.quantum_info.ScalarOp ### compose - + Return the operator composition with another ScalarOp. **Parameters** @@ -104,19 +104,19 @@ python_api_name: qiskit.quantum_info.ScalarOp ### conjugate - + Return the conjugate of the ScalarOp. ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -139,7 +139,7 @@ python_api_name: qiskit.quantum_info.ScalarOp ### expand - + Return the reverse-order tensor product with another ScalarOp. **Parameters** @@ -159,25 +159,25 @@ python_api_name: qiskit.quantum_info.ScalarOp ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_unitary - + Return True if operator is a unitary matrix. ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the ScalarOp. **Parameters** @@ -195,7 +195,7 @@ python_api_name: qiskit.quantum_info.ScalarOp ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -219,7 +219,7 @@ python_api_name: qiskit.quantum_info.ScalarOp ### tensor - + Return the tensor product with another ScalarOp. **Parameters** @@ -243,13 +243,13 @@ python_api_name: qiskit.quantum_info.ScalarOp ### to\_matrix - + Convert to a Numpy matrix. ### to\_operator - + Convert to an Operator object. **Return type** @@ -259,7 +259,7 @@ python_api_name: qiskit.quantum_info.ScalarOp ### transpose - + Return the transpose of the ScalarOp. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.SparsePauliOp.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.SparsePauliOp.mdx index f15a7261bcd..2d79396db51 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.SparsePauliOp.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.SparsePauliOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp # SparsePauliOp - + Bases: `LinearOp` Sparse N-qubit operator in a Pauli basis representation. @@ -127,13 +127,13 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### adjoint - + Return the adjoint of the Operator. ### apply\_layout - + Apply a transpiler layout to this [`SparsePauliOp`](#qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp") **Parameters** @@ -152,7 +152,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### argsort - + Return indices for sorting the rows of the table. Returns the composition of permutations in the order of sorting by coefficient and sorting by Pauli. By using the weight kwarg the output can additionally be sorted by the number of non-identity terms in the Pauli, where the set of all Pauli’s of a given weight are still ordered lexicographically. @@ -220,7 +220,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### assign\_parameters - + Bind the free `Parameter`s in the coefficients to provided values. **Parameters** @@ -239,7 +239,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### chop - + Set real and imaginary parts of the coefficients to 0 if `< tol` in magnitude. For example, the operator representing `1+1e-17j X + 1e-17 Y` with a tolerance larger than `1e-17` will be reduced to `1 X` whereas [`SparsePauliOp.simplify()`](#qiskit.quantum_info.SparsePauliOp.simplify "qiskit.quantum_info.SparsePauliOp.simplify") would return `1+1e-17j X`. @@ -261,7 +261,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### compose - + Return the operator composition with another SparsePauliOp. **Parameters** @@ -291,19 +291,19 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### conjugate - + Return the conjugate of the SparsePauliOp. ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -326,7 +326,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### equiv - + Check if two SparsePauliOp operators are equivalent. **Parameters** @@ -345,7 +345,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### expand - + Return the reverse-order tensor product with another SparsePauliOp. **Parameters** @@ -365,7 +365,7 @@ python_api_name: qiskit.quantum_info.SparsePauliOp ### from\_list - + Construct from a list of Pauli strings and coefficients. For example, the 5-qubit Hamiltonian @@ -403,7 +403,7 @@ $$ ### from\_operator - + Construct from an Operator objector. Note that the cost of this construction is exponential in general because the number of possible Pauli terms in the decomposition is exponential in the number of qubits. @@ -431,7 +431,7 @@ $$ ### from\_sparse\_list - + Construct from a list of local Pauli strings and coefficients. Each list element is a 3-tuple of a local Pauli string, indices where to apply it, and a coefficient. @@ -476,7 +476,7 @@ $$ ### group\_commuting - + Partition a SparsePauliOp into sets of commuting Pauli strings. **Parameters** @@ -509,13 +509,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_unitary - + Return True if operator is a unitary matrix. **Parameters** @@ -534,7 +534,7 @@ $$ ### label\_iter - + Return a label representation iterator. This is a lazy iterator that converts each term in the SparsePauliOp into a tuple (label, coeff). To convert the entire table to labels use the `to_labels()` method. @@ -550,7 +550,7 @@ $$ ### matrix\_iter - + Return a matrix representation iterator. This is a lazy iterator that converts each term in the SparsePauliOp into a matrix as it is used. To convert to a single matrix use the [`to_matrix()`](#qiskit.quantum_info.SparsePauliOp.to_matrix "qiskit.quantum_info.SparsePauliOp.to_matrix") method. @@ -570,7 +570,7 @@ $$ ### noncommutation\_graph - + Create the non-commutation graph of this SparsePauliOp. This transforms the measurement operator grouping problem into graph coloring problem. The constructed graph contains one node for each Pauli. The nodes will be connecting for any two Pauli terms that do \_not\_ commute. @@ -592,13 +592,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the compose of a operator with itself n times. **Parameters** @@ -620,7 +620,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -644,7 +644,7 @@ $$ ### simplify - + Simplify PauliList by combining duplicates and removing zeros. **Parameters** @@ -663,7 +663,7 @@ $$ ### sort - + Sort the rows of the table. After sorting the coefficients using numpy’s argsort, sort by Pauli. Pauli sort takes precedence. If Pauli is the same, it will be sorted by coefficient. By using the weight kwarg the output can additionally be sorted by the number of non-identity terms in the Pauli, where the set of all Pauli’s of a given weight are still ordered lexicographically. @@ -734,7 +734,7 @@ $$ ### sum - + Sum of SparsePauliOps. This is a specialized version of the builtin `sum` function for SparsePauliOp with smaller overhead. @@ -760,7 +760,7 @@ $$ ### tensor - + Return the tensor product with another SparsePauliOp. **Parameters** @@ -784,7 +784,7 @@ $$ ### to\_list - + Convert to a list Pauli string labels and coefficients. For operators with a lot of terms converting using the `array=True` kwarg will be more efficient since it allocates memory for the full Numpy array of labels in advance. @@ -804,12 +804,13 @@ $$ ### to\_matrix - + Convert to a dense or sparse matrix. **Parameters** - **sparse** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – if True return a sparse CSR matrix, otherwise return dense Numpy array (Default: False). + * **sparse** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – if `True` return a sparse CSR matrix, otherwise return dense Numpy array (the default). + * **force\_serial** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – if `True`, use an unthreaded implementation, regardless of the state of the [Qiskit threading-control environment variables](/start/configure-qiskit-local#environment-variables). By default, this will use threaded parallelism over the available CPUs. **Returns** @@ -822,7 +823,7 @@ $$ ### to\_operator - + Convert to a matrix Operator object **Return type** @@ -832,7 +833,7 @@ $$ ### transpose - + Return the transpose of the SparsePauliOp. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.StabilizerState.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.StabilizerState.mdx index 133daad5c62..2269732b46f 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.StabilizerState.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.StabilizerState.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.StabilizerState # StabilizerState - + Bases: `QuantumState` StabilizerState class. Stabilizer simulator using the convention from reference \[1]. Based on the internal class [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford"). @@ -83,25 +83,25 @@ python_api_name: qiskit.quantum_info.StabilizerState ### conjugate - + Return the conjugate of the operator. ### copy - + Make a copy of current operator. ### dims - + Return tuple of input dimension for specified subsystems. ### equiv - + Return True if the two generating sets generate the same stabilizer group. **Parameters** @@ -119,7 +119,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### evolve - + Evolve a stabilizer state by a Clifford operator. **Parameters** @@ -143,7 +143,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### expand - + Return the tensor product stabilizer state other ⊗ self. **Parameters** @@ -165,7 +165,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### expectation\_value - + Compute the expectation value of a Pauli operator. **Parameters** @@ -188,7 +188,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### from\_stabilizer\_list - + Create a stabilizer state from the collection of stabilizers. **Parameters** @@ -208,13 +208,13 @@ python_api_name: qiskit.quantum_info.StabilizerState ### is\_valid - + Return True if a valid StabilizerState. ### measure - + Measure subsystems and return outcome and post-measure state. Note that this function uses the QuantumStates internal random number generator for sampling the measurement outcome. The RNG seed can be set using the [`seed()`](#qiskit.quantum_info.StabilizerState.seed "qiskit.quantum_info.StabilizerState.seed") method. @@ -236,7 +236,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### probabilities - + Return the subsystem measurement probability vector. Measurement probabilities are with respect to measurement in the computation (diagonal) basis. @@ -257,7 +257,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### probabilities\_dict - + Return the subsystem measurement probability dictionary. Measurement probabilities are with respect to measurement in the computation (diagonal) basis. @@ -280,7 +280,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### purity - + Return the purity of the quantum state, which equals to 1, since it is always a pure state. **Returns** @@ -298,7 +298,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### reset - + Reset state or subsystems to the 0-state. **Parameters** @@ -320,7 +320,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### sample\_counts - + Sample a dict of qubit measurement outcomes in the computational basis. **Parameters** @@ -345,7 +345,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### sample\_memory - + Sample a list of qubit measurement outcomes in the computational basis. **Parameters** @@ -370,13 +370,13 @@ python_api_name: qiskit.quantum_info.StabilizerState ### seed - + Set the seed for the quantum state RNG. ### tensor - + Return the tensor product stabilizer state self ⊗ other. **Parameters** @@ -398,7 +398,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### to\_operator - + Convert state to matrix operator class **Return type** @@ -408,7 +408,7 @@ python_api_name: qiskit.quantum_info.StabilizerState ### trace - + Return the trace of the stabilizer state as a density matrix, which equals to 1, since it is always a pure state. **Returns** diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Statevector.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Statevector.mdx index da01f0f1904..40898f409f5 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Statevector.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Statevector.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Statevector # Statevector - + Bases: `QuantumState`, `TolerancesMixin` Statevector class @@ -69,7 +69,7 @@ python_api_name: qiskit.quantum_info.Statevector ### conjugate - + Return the conjugate of the operator. **Return type** @@ -79,19 +79,19 @@ python_api_name: qiskit.quantum_info.Statevector ### copy - + Make a copy of current operator. ### dims - + Return tuple of input dimension for specified subsystems. ### draw - + Return a visualization of the Statevector. **repr**: ASCII TextMatrix of the state’s `__repr__`. @@ -141,7 +141,7 @@ python_api_name: qiskit.quantum_info.Statevector ### equiv - + Return True if other is equivalent as a statevector up to global phase. @@ -165,7 +165,7 @@ python_api_name: qiskit.quantum_info.Statevector ### evolve - + Evolve a quantum state by the operator. **Parameters** @@ -188,7 +188,7 @@ python_api_name: qiskit.quantum_info.Statevector ### expand - + Return the tensor product state other ⊗ self. **Parameters** @@ -210,7 +210,7 @@ python_api_name: qiskit.quantum_info.Statevector ### expectation\_value - + Compute the expectation value of an operator. **Parameters** @@ -229,7 +229,7 @@ python_api_name: qiskit.quantum_info.Statevector ### from\_instruction - + Return the output statevector of an instruction. The statevector is initialized in the state $|{0,\ldots,0}\rangle$ of the same number of qubits as the input instruction or circuit, evolved by the input instruction, and the output statevector returned. @@ -253,7 +253,7 @@ python_api_name: qiskit.quantum_info.Statevector ### from\_int - + Return a computational basis statevector. **Parameters** @@ -279,7 +279,7 @@ python_api_name: qiskit.quantum_info.Statevector ### from\_label - + Return a tensor product of Pauli X,Y,Z eigenstates. | Label | Statevector | @@ -310,7 +310,7 @@ python_api_name: qiskit.quantum_info.Statevector ### inner - + Return the inner product of self and other as $\langle self| other \rangle$. **Parameters** @@ -332,7 +332,7 @@ python_api_name: qiskit.quantum_info.Statevector ### is\_valid - + Return True if a Statevector has norm 1. **Return type** @@ -342,7 +342,7 @@ python_api_name: qiskit.quantum_info.Statevector ### measure - + Measure subsystems and return outcome and post-measure state. Note that this function uses the QuantumStates internal random number generator for sampling the measurement outcome. The RNG seed can be set using the [`seed()`](#qiskit.quantum_info.Statevector.seed "qiskit.quantum_info.Statevector.seed") method. @@ -364,7 +364,7 @@ python_api_name: qiskit.quantum_info.Statevector ### probabilities - + Return the subsystem measurement probability vector. Measurement probabilities are with respect to measurement in the computation (diagonal) basis. @@ -435,7 +435,7 @@ python_api_name: qiskit.quantum_info.Statevector ### probabilities\_dict - + Return the subsystem measurement probability dictionary. Measurement probabilities are with respect to measurement in the computation (diagonal) basis. @@ -458,7 +458,7 @@ python_api_name: qiskit.quantum_info.Statevector ### purity - + Return the purity of the quantum state. **Return type** @@ -468,7 +468,7 @@ python_api_name: qiskit.quantum_info.Statevector ### reset - + Reset state or subsystems to the 0-state. **Parameters** @@ -490,7 +490,7 @@ python_api_name: qiskit.quantum_info.Statevector ### reverse\_qargs - + Return a Statevector with reversed subsystem ordering. For a tensor product state this is equivalent to reversing the order of tensor product subsystems. For a statevector $|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle$ the returned statevector will be $|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle$. @@ -506,7 +506,7 @@ python_api_name: qiskit.quantum_info.Statevector ### sample\_counts - + Sample a dict of qubit measurement outcomes in the computational basis. **Parameters** @@ -531,7 +531,7 @@ python_api_name: qiskit.quantum_info.Statevector ### sample\_memory - + Sample a list of qubit measurement outcomes in the computational basis. **Parameters** @@ -556,13 +556,13 @@ python_api_name: qiskit.quantum_info.Statevector ### seed - + Set the seed for the quantum state RNG. ### tensor - + Return the tensor product state self ⊗ other. **Parameters** @@ -584,7 +584,7 @@ python_api_name: qiskit.quantum_info.Statevector ### to\_dict - + Convert the statevector to dictionary form. This dictionary representation uses a Ket-like notation where the dictionary keys are qudit strings for the subsystem basis vectors. If any subsystem has a dimension greater than 10 comma delimiters are inserted between integers so that subsystems can be distinguished. @@ -653,7 +653,7 @@ python_api_name: qiskit.quantum_info.Statevector ### to\_operator - + Convert state to a rank-1 projector operator **Return type** @@ -663,7 +663,7 @@ python_api_name: qiskit.quantum_info.Statevector ### trace - + Return the trace of the quantum state as a density matrix. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Stinespring.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Stinespring.mdx index 1da11800284..e2f1088f56b 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Stinespring.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Stinespring.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Stinespring # Stinespring - + Bases: `QuantumChannel` Stinespring representation of a quantum channel. @@ -91,7 +91,7 @@ $$ ### adjoint - + Return the adjoint quantum channel. @@ -105,7 +105,7 @@ $$ ### compose - + Return the operator composition with another Stinespring. **Parameters** @@ -135,7 +135,7 @@ $$ ### conjugate - + Return the conjugate quantum channel. @@ -145,13 +145,13 @@ $$ ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -174,7 +174,7 @@ $$ ### expand - + Return the reverse-order tensor product with another Stinespring. **Parameters** @@ -194,13 +194,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_cp - + Test if Choi-matrix is completely-positive (CP) **Return type** @@ -210,13 +210,13 @@ $$ ### is\_cptp - + Return True if completely-positive trace-preserving. ### is\_tp - + Test if a channel is trace-preserving (TP) **Return type** @@ -226,7 +226,7 @@ $$ ### is\_unitary - + Return True if QuantumChannel is a unitary channel. **Return type** @@ -236,13 +236,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the quantum channel. **Parameters** @@ -268,7 +268,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -292,7 +292,7 @@ $$ ### tensor - + Return the tensor product with another Stinespring. **Parameters** @@ -316,7 +316,7 @@ $$ ### to\_instruction - + Convert to a Kraus or UnitaryGate circuit instruction. If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction. @@ -336,7 +336,7 @@ $$ ### to\_operator - + Try to convert channel to a unitary representation Operator. **Return type** @@ -346,7 +346,7 @@ $$ ### transpose - + Return the transpose quantum channel. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.SuperOp.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.SuperOp.mdx index 1edb49931b1..17e3bcf3367 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.SuperOp.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.SuperOp.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.SuperOp # SuperOp - + Bases: `QuantumChannel` Superoperator representation of a quantum channel. @@ -87,7 +87,7 @@ $$ ### adjoint - + Return the adjoint quantum channel. @@ -97,7 +97,7 @@ $$ ### compose - + Return the operator composition with another SuperOp. **Parameters** @@ -127,7 +127,7 @@ $$ ### conjugate - + Return the conjugate quantum channel. @@ -137,13 +137,13 @@ $$ ### copy - + Make a deep copy of current operator. ### dot - + Return the right multiplied operator self \* other. **Parameters** @@ -166,7 +166,7 @@ $$ ### expand - + Return the reverse-order tensor product with another SuperOp. **Parameters** @@ -186,13 +186,13 @@ $$ ### input\_dims - + Return tuple of input dimension for specified subsystems. ### is\_cp - + Test if Choi-matrix is completely-positive (CP) **Return type** @@ -202,7 +202,7 @@ $$ ### is\_cptp - + Return True if completely-positive trace-preserving (CPTP). **Return type** @@ -212,7 +212,7 @@ $$ ### is\_tp - + Test if a channel is trace-preserving (TP) **Return type** @@ -222,7 +222,7 @@ $$ ### is\_unitary - + Return True if QuantumChannel is a unitary channel. **Return type** @@ -232,13 +232,13 @@ $$ ### output\_dims - + Return tuple of output dimension for specified subsystems. ### power - + Return the power of the quantum channel. **Parameters** @@ -264,7 +264,7 @@ $$ ### reshape - + Return a shallow copy with reshaped input and output subsystem dimensions. **Parameters** @@ -288,7 +288,7 @@ $$ ### tensor - + Return the tensor product with another SuperOp. **Parameters** @@ -312,7 +312,7 @@ $$ ### to\_instruction - + Convert to a Kraus or UnitaryGate circuit instruction. If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction. @@ -332,7 +332,7 @@ $$ ### to\_operator - + Try to convert channel to a unitary representation Operator. **Return type** @@ -342,7 +342,7 @@ $$ ### transpose - + Return the transpose quantum channel. diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.Z2Symmetries.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.Z2Symmetries.mdx index c1a8f6667b0..0437a8cb5f6 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.Z2Symmetries.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.Z2Symmetries.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.quantum_info.Z2Symmetries # Z2Symmetries - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") The \$Z\_2\$ symmetry converter identifies symmetries from the problem hamiltonian and uses them to provide a tapered - more efficient - representation of operators as Paulis for this problem. For each identified symmetry, one qubit can be eliminated in the Pauli representation at the cost of having to test two symmetry sectors (for the two possible eigenvalues - tapering values - of the symmetry). In certain problems such as the finding of the main operator’s ground state, one can a priori identify the symmetry sector of the solution and thus effectively reduce the computational overhead. @@ -93,7 +93,7 @@ python_api_name: qiskit.quantum_info.Z2Symmetries ### convert\_clifford - + This method operates the first part of the tapering. It converts the operator by composing it with the clifford unitaries defined in the current symmetry. **Parameters** @@ -111,7 +111,7 @@ python_api_name: qiskit.quantum_info.Z2Symmetries ### find\_z2\_symmetries - + Finds Z2 Pauli-type symmetries of a [`SparsePauliOp`](qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp"). **Returns** @@ -125,7 +125,7 @@ python_api_name: qiskit.quantum_info.Z2Symmetries ### is\_empty - + Check the z2\_symmetries is empty or not. **Returns** @@ -139,7 +139,7 @@ python_api_name: qiskit.quantum_info.Z2Symmetries ### taper - + Taper an operator based on the z2\_symmetries info and sector defined by tapering\_values. Returns operator if the symmetry object is empty. The tapering is a two-step algorithm which first converts the operator into a [`SparsePauliOp`](qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp") with same eigenvalues but where some qubits are only acted upon with the Pauli operators I or X. The number M of these redundant qubits is equal to the number M of identified symmetries. @@ -161,7 +161,7 @@ python_api_name: qiskit.quantum_info.Z2Symmetries ### taper\_clifford - + Operate the second part of the tapering. This function assumes that the input operators have already been transformed using [`convert_clifford()`](#qiskit.quantum_info.Z2Symmetries.convert_clifford "qiskit.quantum_info.Z2Symmetries.convert_clifford"). The redundant qubits due to the symmetries are dropped and replaced by their two possible eigenvalues. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.quantum_info.pauli_basis.mdx b/docs/api/qiskit/dev/qiskit.quantum_info.pauli_basis.mdx index 013531a21e6..4bd67aea546 100644 --- a/docs/api/qiskit/dev/qiskit.quantum_info.pauli_basis.mdx +++ b/docs/api/qiskit/dev/qiskit.quantum_info.pauli_basis.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.quantum_info.pauli_basis # qiskit.quantum\_info.pauli\_basis - + Return the ordered PauliList for the n-qubit Pauli basis. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.result.BaseReadoutMitigator.mdx b/docs/api/qiskit/dev/qiskit.result.BaseReadoutMitigator.mdx index 20435970d8e..7c07f4fa6d8 100644 --- a/docs/api/qiskit/dev/qiskit.result.BaseReadoutMitigator.mdx +++ b/docs/api/qiskit/dev/qiskit.result.BaseReadoutMitigator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.BaseReadoutMitigator # BaseReadoutMitigator - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Base readout error mitigator class. @@ -17,7 +17,7 @@ python_api_name: qiskit.result.BaseReadoutMitigator ### expectation\_value - + Calculate the expectation value of a diagonal Hermitian operator. **Parameters** @@ -39,7 +39,7 @@ python_api_name: qiskit.result.BaseReadoutMitigator ### quasi\_probabilities - + Convert counts to a dictionary of quasi-probabilities **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.result.CorrelatedReadoutMitigator.mdx b/docs/api/qiskit/dev/qiskit.result.CorrelatedReadoutMitigator.mdx index 9c2118f4681..d618f102c19 100644 --- a/docs/api/qiskit/dev/qiskit.result.CorrelatedReadoutMitigator.mdx +++ b/docs/api/qiskit/dev/qiskit.result.CorrelatedReadoutMitigator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.CorrelatedReadoutMitigator # CorrelatedReadoutMitigator - + Bases: [`BaseReadoutMitigator`](qiskit.result.BaseReadoutMitigator "qiskit.result.mitigation.base_readout_mitigator.BaseReadoutMitigator") N-qubit readout error mitigator. @@ -44,7 +44,7 @@ python_api_name: qiskit.result.CorrelatedReadoutMitigator ### assignment\_matrix - + Return the readout assignment matrix for specified qubits. The assignment matrix is the stochastic matrix $A$ which assigns a noisy readout probability distribution to an ideal input readout distribution: $P(i|j) = \langle i | A | j \rangle$. @@ -64,7 +64,7 @@ python_api_name: qiskit.result.CorrelatedReadoutMitigator ### expectation\_value - + Compute the mitigated expectation value of a diagonal observable. This computes the mitigated estimator of $\langle O \rangle = \mbox{Tr}[\rho. O]$ of a diagonal observable $O = \sum_{x\in\{0, 1\}^n} O(x)|x\rangle\!\langle x|$. @@ -92,7 +92,7 @@ python_api_name: qiskit.result.CorrelatedReadoutMitigator ### mitigation\_matrix - + Return the readout mitigation matrix for the specified qubits. The mitigation matrix $A^{-1}$ is defined as the inverse of the [`assignment_matrix()`](#qiskit.result.CorrelatedReadoutMitigator.assignment_matrix "qiskit.result.CorrelatedReadoutMitigator.assignment_matrix") $A$. @@ -112,7 +112,7 @@ python_api_name: qiskit.result.CorrelatedReadoutMitigator ### quasi\_probabilities - + Compute mitigated quasi probabilities value. **Parameters** @@ -135,7 +135,7 @@ python_api_name: qiskit.result.CorrelatedReadoutMitigator ### stddev\_upper\_bound - + Return an upper bound on standard deviation of expval estimator. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.result.Counts.mdx b/docs/api/qiskit/dev/qiskit.result.Counts.mdx index 8118cc9d062..aa9fed1c50d 100644 --- a/docs/api/qiskit/dev/qiskit.result.Counts.mdx +++ b/docs/api/qiskit/dev/qiskit.result.Counts.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.Counts # Counts - + Bases: [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") A class to store a counts result from a circuit execution. @@ -67,7 +67,7 @@ python_api_name: qiskit.result.Counts ### hex\_outcomes - + Return a counts dictionary with hexadecimal string keys **Returns** @@ -87,7 +87,7 @@ python_api_name: qiskit.result.Counts ### int\_outcomes - + Build a counts dictionary with integer keys instead of count strings **Returns** @@ -113,7 +113,7 @@ python_api_name: qiskit.result.Counts ### most\_frequent - + Return the most frequent count **Returns** @@ -153,7 +153,7 @@ python_api_name: qiskit.result.Counts ### shots - + Return the number of shots diff --git a/docs/api/qiskit/dev/qiskit.result.LocalReadoutMitigator.mdx b/docs/api/qiskit/dev/qiskit.result.LocalReadoutMitigator.mdx index 1691ed15dfe..829830b9eca 100644 --- a/docs/api/qiskit/dev/qiskit.result.LocalReadoutMitigator.mdx +++ b/docs/api/qiskit/dev/qiskit.result.LocalReadoutMitigator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.LocalReadoutMitigator # LocalReadoutMitigator - + Bases: [`BaseReadoutMitigator`](qiskit.result.BaseReadoutMitigator "qiskit.result.mitigation.base_readout_mitigator.BaseReadoutMitigator") 1-qubit tensor product readout error mitigator. @@ -45,7 +45,7 @@ python_api_name: qiskit.result.LocalReadoutMitigator ### assignment\_matrix - + Return the measurement assignment matrix for specified qubits. The assignment matrix is the stochastic matrix $A$ which assigns a noisy measurement probability distribution to an ideal input measurement distribution: $P(i|j) = \langle i | A | j \rangle$. @@ -65,7 +65,7 @@ python_api_name: qiskit.result.LocalReadoutMitigator ### expectation\_value - + Compute the mitigated expectation value of a diagonal observable. This computes the mitigated estimator of $\langle O \rangle = \mbox{Tr}[\rho. O]$ of a diagonal observable $O = \sum_{x\in\{0, 1\}^n} O(x)|x\rangle\!\langle x|$. @@ -93,7 +93,7 @@ python_api_name: qiskit.result.LocalReadoutMitigator ### mitigation\_matrix - + Return the measurement mitigation matrix for the specified qubits. The mitigation matrix $A^{-1}$ is defined as the inverse of the [`assignment_matrix()`](#qiskit.result.LocalReadoutMitigator.assignment_matrix "qiskit.result.LocalReadoutMitigator.assignment_matrix") $A$. @@ -113,7 +113,7 @@ python_api_name: qiskit.result.LocalReadoutMitigator ### quasi\_probabilities - + Compute mitigated quasi probabilities value. **Parameters** @@ -140,7 +140,7 @@ python_api_name: qiskit.result.LocalReadoutMitigator ### stddev\_upper\_bound - + Return an upper bound on standard deviation of expval estimator. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.result.ProbDistribution.mdx b/docs/api/qiskit/dev/qiskit.result.ProbDistribution.mdx index 23b82b8a9a1..0cd6768991b 100644 --- a/docs/api/qiskit/dev/qiskit.result.ProbDistribution.mdx +++ b/docs/api/qiskit/dev/qiskit.result.ProbDistribution.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.ProbDistribution # ProbDistribution - + Bases: [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") A generic dict-like class for probability distributions. @@ -36,7 +36,7 @@ python_api_name: qiskit.result.ProbDistribution ### binary\_probabilities - + Build a probabilities dictionary with binary string keys **Parameters** @@ -76,7 +76,7 @@ python_api_name: qiskit.result.ProbDistribution ### hex\_probabilities - + Build a probabilities dictionary with hexadecimal string keys **Returns** diff --git a/docs/api/qiskit/dev/qiskit.result.QuasiDistribution.mdx b/docs/api/qiskit/dev/qiskit.result.QuasiDistribution.mdx index ffe3ba5670f..98d787b6418 100644 --- a/docs/api/qiskit/dev/qiskit.result.QuasiDistribution.mdx +++ b/docs/api/qiskit/dev/qiskit.result.QuasiDistribution.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.QuasiDistribution # QuasiDistribution - + Bases: [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") A dict-like class for representing quasi-probabilities. @@ -50,7 +50,7 @@ python_api_name: qiskit.result.QuasiDistribution ### binary\_probabilities - + Build a quasi-probabilities dictionary with binary string keys **Parameters** @@ -90,7 +90,7 @@ python_api_name: qiskit.result.QuasiDistribution ### hex\_probabilities - + Build a quasi-probabilities dictionary with hexadecimal string keys **Returns** @@ -114,7 +114,7 @@ python_api_name: qiskit.result.QuasiDistribution ### nearest\_probability\_distribution - + Takes a quasiprobability distribution and maps it to the closest probability distribution as defined by the L2-norm. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.result.Result.mdx b/docs/api/qiskit/dev/qiskit.result.Result.mdx index 3400c11aee7..367ddc4f9d9 100644 --- a/docs/api/qiskit/dev/qiskit.result.Result.mdx +++ b/docs/api/qiskit/dev/qiskit.result.Result.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.result.Result # Result - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Model for Results. @@ -77,7 +77,7 @@ python_api_name: qiskit.result.Result ### data - + Get the raw data for an experiment. Note this data will be a single classical and quantum register and in a format required by the results schema. We recommend that most users use the get\_xxx method, and the data will be post-processed for the data type. @@ -109,7 +109,7 @@ python_api_name: qiskit.result.Result ### from\_dict - + Create a new ExperimentResultData object from a dictionary. **Parameters** @@ -127,7 +127,7 @@ python_api_name: qiskit.result.Result ### get\_counts - + Get the histogram data of an experiment. **Parameters** @@ -149,7 +149,7 @@ python_api_name: qiskit.result.Result ### get\_memory - + Get the sequence of memory states (readouts) for each shot The data from the experiment is a list of format \[‘00000’, ‘01000’, ‘10100’, ‘10100’, ‘11101’, ‘11100’, ‘00101’, …, ‘01010’] **Parameters** @@ -179,7 +179,7 @@ python_api_name: qiskit.result.Result ### get\_statevector - + Get the final statevector of an experiment. **Parameters** @@ -202,7 +202,7 @@ python_api_name: qiskit.result.Result ### get\_unitary - + Get the final unitary of an experiment. **Parameters** @@ -227,7 +227,7 @@ python_api_name: qiskit.result.Result ### to\_dict - + Return a dictionary format representation of the Result **Returns** diff --git a/docs/api/qiskit/dev/qiskit.result.ResultError.mdx b/docs/api/qiskit/dev/qiskit.result.ResultError.mdx index 77191e2b385..331e55ead41 100644 --- a/docs/api/qiskit/dev/qiskit.result.ResultError.mdx +++ b/docs/api/qiskit/dev/qiskit.result.ResultError.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.result.ResultError # qiskit.result.ResultError - + Exceptions raised due to errors in result output. It may be better for the Qiskit API to raise this exception. diff --git a/docs/api/qiskit/dev/qiskit.synthesis.EvolutionSynthesis.mdx b/docs/api/qiskit/dev/qiskit.synthesis.EvolutionSynthesis.mdx index b5ad03f542c..fa71075cca3 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.EvolutionSynthesis.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.EvolutionSynthesis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.EvolutionSynthesis # EvolutionSynthesis - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Interface for evolution synthesis algorithms. @@ -33,7 +33,7 @@ python_api_name: qiskit.synthesis.EvolutionSynthesis ### synthesize - + Synthesize an `qiskit.circuit.library.PauliEvolutionGate`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.LieTrotter.mdx b/docs/api/qiskit/dev/qiskit.synthesis.LieTrotter.mdx index 764c3186350..9e7f16a4ccf 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.LieTrotter.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.LieTrotter.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.LieTrotter # LieTrotter - + Bases: [`ProductFormula`](qiskit.synthesis.ProductFormula "qiskit.synthesis.evolution.product_formula.ProductFormula") The Lie-Trotter product formula. @@ -56,7 +56,7 @@ $$ ### synthesize - + Synthesize an `qiskit.circuit.library.PauliEvolutionGate`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.MatrixExponential.mdx b/docs/api/qiskit/dev/qiskit.synthesis.MatrixExponential.mdx index 1b3bb7325d6..b037cdaa102 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.MatrixExponential.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.MatrixExponential.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.MatrixExponential # MatrixExponential - + Bases: [`EvolutionSynthesis`](qiskit.synthesis.EvolutionSynthesis "qiskit.synthesis.evolution.evolution_synthesis.EvolutionSynthesis") Exact operator evolution via matrix exponentiation and unitary synthesis. @@ -35,7 +35,7 @@ python_api_name: qiskit.synthesis.MatrixExponential ### synthesize - + Synthesize an `qiskit.circuit.library.PauliEvolutionGate`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.OneQubitEulerDecomposer.mdx b/docs/api/qiskit/dev/qiskit.synthesis.OneQubitEulerDecomposer.mdx index 0400cd4ea93..75545c67f3a 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.OneQubitEulerDecomposer.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.OneQubitEulerDecomposer.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.OneQubitEulerDecomposer # OneQubitEulerDecomposer - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A class for decomposing 1-qubit unitaries into Euler angle rotations. @@ -32,7 +32,7 @@ python_api_name: qiskit.synthesis.OneQubitEulerDecomposer ### \_\_call\_\_ - + Decompose single qubit gate into a circuit. **Parameters** @@ -79,7 +79,7 @@ python_api_name: qiskit.synthesis.OneQubitEulerDecomposer ### angles - + Return the Euler angles for input array. **Parameters** @@ -97,7 +97,7 @@ python_api_name: qiskit.synthesis.OneQubitEulerDecomposer ### angles\_and\_phase - + Return the Euler angles and phase for input array. **Parameters** @@ -115,7 +115,7 @@ python_api_name: qiskit.synthesis.OneQubitEulerDecomposer ### build\_circuit - + Return the circuit or dag object from a list of gates. diff --git a/docs/api/qiskit/dev/qiskit.synthesis.ProductFormula.mdx b/docs/api/qiskit/dev/qiskit.synthesis.ProductFormula.mdx index eb77c1a396e..19f65c97130 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.ProductFormula.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.ProductFormula.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.ProductFormula # ProductFormula - + Bases: [`EvolutionSynthesis`](qiskit.synthesis.EvolutionSynthesis "qiskit.synthesis.evolution.evolution_synthesis.EvolutionSynthesis") Product formula base class for the decomposition of non-commuting operator exponentials. @@ -43,7 +43,7 @@ python_api_name: qiskit.synthesis.ProductFormula ### synthesize - + Synthesize an `qiskit.circuit.library.PauliEvolutionGate`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.QDrift.mdx b/docs/api/qiskit/dev/qiskit.synthesis.QDrift.mdx index 5fb1f7ecf5c..ca6e7f17cfc 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.QDrift.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.QDrift.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.QDrift # QDrift - + Bases: [`ProductFormula`](qiskit.synthesis.ProductFormula "qiskit.synthesis.evolution.product_formula.ProductFormula") The QDrift Trotterization method, which selects each each term in the Trotterization randomly, with a probability proportional to its weight. Based on the work of Earl Campbell in Ref. \[1]. @@ -45,7 +45,7 @@ python_api_name: qiskit.synthesis.QDrift ### synthesize - + Synthesize an `qiskit.circuit.library.PauliEvolutionGate`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.SolovayKitaevDecomposition.mdx b/docs/api/qiskit/dev/qiskit.synthesis.SolovayKitaevDecomposition.mdx index 665436c8ffa..34875378f6c 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.SolovayKitaevDecomposition.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.SolovayKitaevDecomposition.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.SolovayKitaevDecomposition # SolovayKitaevDecomposition - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") The Solovay Kitaev discrete decomposition algorithm. @@ -23,7 +23,7 @@ python_api_name: qiskit.synthesis.SolovayKitaevDecomposition ### find\_basic\_approximation - + Finds gate in `self._basic_approximations` that best represents `sequence`. **Parameters** @@ -41,7 +41,7 @@ python_api_name: qiskit.synthesis.SolovayKitaevDecomposition ### load\_basic\_approximations - + Load basic approximations. **Parameters** @@ -63,7 +63,7 @@ python_api_name: qiskit.synthesis.SolovayKitaevDecomposition ### run - + Run the algorithm. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.SuzukiTrotter.mdx b/docs/api/qiskit/dev/qiskit.synthesis.SuzukiTrotter.mdx index 5f5fb05d7c0..f86353ceb8c 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.SuzukiTrotter.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.SuzukiTrotter.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.SuzukiTrotter # SuzukiTrotter - + Bases: [`ProductFormula`](qiskit.synthesis.ProductFormula "qiskit.synthesis.evolution.product_formula.ProductFormula") The (higher order) Suzuki-Trotter product formula. @@ -63,7 +63,7 @@ $$ ### synthesize - + Synthesize an `qiskit.circuit.library.PauliEvolutionGate`. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitBasisDecomposer.mdx b/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitBasisDecomposer.mdx index 8cf1349e5bd..968a002be19 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitBasisDecomposer.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitBasisDecomposer.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.TwoQubitBasisDecomposer # TwoQubitBasisDecomposer - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A class for decomposing 2-qubit unitaries into minimal number of uses of a 2-qubit basis gate. @@ -22,7 +22,7 @@ python_api_name: qiskit.synthesis.TwoQubitBasisDecomposer ### \_\_call\_\_ - + Decompose a two-qubit `unitary` over fixed basis and $SU(2)$ using the best approximation given that each basis application has a finite `basis_fidelity`. **Parameters** @@ -30,6 +30,7 @@ python_api_name: qiskit.synthesis.TwoQubitBasisDecomposer * **unitary** ([*Operator*](qiskit.quantum_info.Operator "qiskit.quantum_info.Operator") *or ndarray*) – $4 \times 4$ unitary to synthesize. * **basis\_fidelity** ([*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") *or None*) – Fidelity to be assumed for applications of KAK Gate. If given, overrides `basis_fidelity` given at init. * **approximate** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Approximates if basis fidelities are less than 1.0. + * **use\_dag** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If true a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") is returned instead of a `QuantumCircuit` when this class is called. * **\_num\_basis\_uses** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – force a particular approximation by passing a number in \[0, 3]. **Returns** @@ -49,7 +50,7 @@ python_api_name: qiskit.synthesis.TwoQubitBasisDecomposer ### decomp0 - + Decompose target $\sim U_d(x, y, z)$ with $0$ uses of the basis gate. Result $U_r$ has trace: $$ @@ -62,7 +63,7 @@ $$ ### decomp1 - + Decompose target $\sim U_d(x, y, z)$ with $1$ use of the basis gate $\sim U_d(a, b, c)$. Result $U_r$ has trace: $$ @@ -75,7 +76,7 @@ $$ ### decomp2\_supercontrolled - + Decompose target $\sim U_d(x, y, z)$ with $2$ uses of the basis gate. For supercontrolled basis $\sim U_d(\pi/4, b, 0)$, all b, result $U_r$ has trace @@ -89,19 +90,19 @@ $$ ### decomp3\_supercontrolled - + Decompose target with $3$ uses of the basis. This is an exact decomposition for supercontrolled basis $\sim U_d(\pi/4, b, 0)$, all b, and any target. No guarantees for non-supercontrolled basis. ### num\_basis\_gates - + Computes the number of basis gates needed in a decomposition of input unitary ### traces - + Give the expected traces $\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert$ for a different number of basis gates. diff --git a/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitWeylDecomposition.mdx b/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitWeylDecomposition.mdx index aa7e8f6b924..11f292acf57 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitWeylDecomposition.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.TwoQubitWeylDecomposition.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.TwoQubitWeylDecomposition # TwoQubitWeylDecomposition - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Two-qubit Weyl decomposition. @@ -90,7 +90,7 @@ $$ ### actual\_fidelity - + Calculates the actual fidelity of the decomposed circuit to the input unitary. **Return type** @@ -100,7 +100,7 @@ $$ ### circuit - + Returns Weyl decomposition in circuit form. **Return type** @@ -110,7 +110,7 @@ $$ ### from\_bytes - + Decode bytes into [`TwoQubitWeylDecomposition`](#qiskit.synthesis.TwoQubitWeylDecomposition "qiskit.synthesis.TwoQubitWeylDecomposition"). **Return type** @@ -120,7 +120,7 @@ $$ ### specialize - + Make changes to the decomposition to comply with any specializations. This method will always raise a `NotImplementedError` because there are no specializations to comply with in the current implementation. diff --git a/docs/api/qiskit/dev/qiskit.synthesis.XXDecomposer.mdx b/docs/api/qiskit/dev/qiskit.synthesis.XXDecomposer.mdx index 4b1b32e8fc6..59437bb408d 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.XXDecomposer.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.XXDecomposer.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.XXDecomposer # XXDecomposer - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A class for optimal decomposition of 2-qubit unitaries into 2-qubit basis gates of `XX` type (i.e., each locally equivalent to $CAN(\alpha, 0, 0)$ for a possibly varying $alpha$). @@ -26,7 +26,7 @@ python_api_name: qiskit.synthesis.XXDecomposer ### \_\_call\_\_ - + Fashions a circuit which (perhaps approximately) models the special unitary operation `unitary`, using the circuit templates supplied at initialization as `embodiments`. The routine uses `basis_fidelity` to select the optimal circuit template, including when performing exact synthesis; the contents of `basis_fidelity` is a dictionary mapping interaction strengths (scaled so that $CX = RZX(\pi/2)$ corresponds to $\pi/2$) to circuit fidelities. **Parameters** @@ -34,6 +34,7 @@ python_api_name: qiskit.synthesis.XXDecomposer * **unitary** ([*Operator*](qiskit.quantum_info.Operator "qiskit.quantum_info.Operator") *or ndarray*) – $4 \times 4$ unitary to synthesize. * **basis\_fidelity** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") *or*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – Fidelity of basis gates. Can be either (1) a dictionary mapping `XX` angle values to fidelity at that angle; or (2) a single float `f`, interpreted as `{pi: f, pi/2: f/2, pi/3: f/3}`. If given, overrides the basis\_fidelity given at init. * **approximate** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Approximates if basis fidelities are less than 1.0 . + * **use\_dag** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If true a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") is returned instead of a `QuantumCircuit` when this class is called. **Returns** @@ -48,7 +49,7 @@ python_api_name: qiskit.synthesis.XXDecomposer ### num\_basis\_gates - + Counts the number of gates that would be emitted during re-synthesis. diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.AQC.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.AQC.mdx index ddb7bc80c11..099e7b52b09 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.AQC.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.AQC.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.AQC # AQC - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A generic implementation of the Approximate Quantum Compiler. This implementation is agnostic of the underlying implementation of the approximate circuit, objective, and optimizer. Users may pass corresponding implementations of the abstract classes: @@ -27,7 +27,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.AQC ### compile\_unitary - + Approximately compiles a circuit represented as a unitary matrix by solving an optimization problem defined by `approximating_objective` and using `approximate_circuit` as a template for the approximate circuit. **Parameters** 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 d94cfe0f3be..8529b706d5e 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximateCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximateCircuit.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximateCircuit # ApproximateCircuit - + Bases: [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") A base class that represents an approximate circuit. @@ -62,7 +62,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximateCircuit ### instances - + ### layout @@ -236,7 +236,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximateCircuit ### build - + **Constructs this circuit out of the parameters(thetas). Parameter values must be set before** constructing the circuit. diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximatingObjective.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximatingObjective.mdx index cf844f791d1..9395f24fb86 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximatingObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.ApproximatingObjective.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximatingObjective # ApproximatingObjective - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") A base class for an optimization problem definition. An implementing class must provide at least an implementation of the `objective` method. In such case only gradient free optimizers can be used. Both method, `objective` and `gradient`, preferable to have in an implementation. @@ -31,7 +31,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximatingObjective ### gradient - + Computes a gradient with respect to parameters given a vector of parameter values. **Parameters** @@ -49,7 +49,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.ApproximatingObjective ### objective - + Computes a value of the objective function given a vector of parameter values. **Parameters** 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 012d31d58d2..2569d5e8a3d 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitCircuit.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitCircuit # CNOTUnitCircuit - + Bases: [`ApproximateCircuit`](qiskit.synthesis.unitary.aqc.ApproximateCircuit "qiskit.synthesis.unitary.aqc.approximate.ApproximateCircuit") A class that represents an approximate circuit based on CNOT unit blocks. @@ -68,7 +68,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitCircuit ### instances - + ### layout @@ -242,7 +242,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitCircuit ### build - + **Constructs a Qiskit quantum circuit out of the parameters (angles) of this circuit. If a** parameter value is less in absolute value than the specified tolerance then the corresponding rotation gate will be skipped in the circuit. 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 d8982b1f6cf..bcf00cb8be1 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.CNOTUnitObjective.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.CNOTUnitObjective # CNOTUnitObjective - + Bases: [`ApproximatingObjective`](qiskit.synthesis.unitary.aqc.ApproximatingObjective "qiskit.synthesis.unitary.aqc.approximate.ApproximatingObjective"), [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") A base class for a problem definition based on CNOT unit. This class may have different subclasses for objective and gradient computations. 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 3b19164016d..4088c69808a 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective # DefaultCNOTUnitObjective - + Bases: [`CNOTUnitObjective`](qiskit.synthesis.unitary.aqc.CNOTUnitObjective "qiskit.synthesis.unitary.aqc.cnot_unit_objective.CNOTUnitObjective") A naive implementation of the objective function based on CNOT units. @@ -42,7 +42,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective ### gradient - + Computes a gradient with respect to parameters given a vector of parameter values. **Parameters** @@ -60,7 +60,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.DefaultCNOTUnitObjective ### objective - + Computes a value of the objective function given a vector of parameter values. **Parameters** 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 76faa06fa15..2b58d459fce 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective # FastCNOTUnitObjective - + Bases: [`CNOTUnitObjective`](qiskit.synthesis.unitary.aqc.CNOTUnitObjective "qiskit.synthesis.unitary.aqc.cnot_unit_objective.CNOTUnitObjective") Implementation of objective function and gradient calculator, which is similar to `DefaultCNOTUnitObjective` but several times faster. @@ -42,7 +42,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective ### gradient - + Computes the gradient of objective function. See description of the base class method. **Return type** @@ -52,7 +52,7 @@ python_api_name: qiskit.synthesis.unitary.aqc.FastCNOTUnitObjective ### objective - + Computes the objective function and some intermediate data for the subsequent gradient computation. See description of the base class method. **Return type** diff --git a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.mdx b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.mdx index 668c3dd713f..a920f9c14e1 100644 --- a/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.mdx +++ b/docs/api/qiskit/dev/qiskit.synthesis.unitary.aqc.mdx @@ -129,7 +129,7 @@ This uses a helper function, [`make_cnot_network`](#qiskit.synthesis.unitary.aqc ### make\_cnot\_network - + Generates a network consisting of building blocks each containing a CNOT gate and possibly some single-qubit ones. This network models a quantum operator in question. Note, each building block has 2 input and outputs corresponding to a pair of qubits. What we actually return here is a chain of indices of qubit pairs shared by every building block in a row. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.AnalysisPass.mdx b/docs/api/qiskit/dev/qiskit.transpiler.AnalysisPass.mdx index da2ace126ed..75ea11d33f2 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.AnalysisPass.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.AnalysisPass.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.AnalysisPass # AnalysisPass - + Bases: `BasePass` An analysis pass: change property set, not DAG. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.AnalysisPass ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.AnalysisPass ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.AnalysisPass ### run - + Run a pass on the DAGCircuit. This is implemented by the pass developer. **Parameters** @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.AnalysisPass ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.CouplingMap.mdx b/docs/api/qiskit/dev/qiskit.transpiler.CouplingMap.mdx index 15a72af7a03..e79d8396bf5 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.CouplingMap.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.CouplingMap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.CouplingMap # CouplingMap - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Directed graph specifying fixed coupling. @@ -58,7 +58,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### add\_edge - + Add directed edge to coupling graph. src (int): source physical qubit dst (int): destination physical qubit @@ -66,7 +66,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### add\_physical\_qubit - + Add a physical qubit to the coupling graph as a node. physical\_qubit (int): An integer representing a physical qubit. @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### compute\_distance\_matrix - + Compute the full distance matrix on pairs of nodes. The distance map self.\_dist\_matrix is computed from the graph using all\_pairs\_shortest\_path\_length. This is normally handled internally by the [`distance_matrix`](#qiskit.transpiler.CouplingMap.distance_matrix "qiskit.transpiler.CouplingMap.distance_matrix") attribute or the [`distance()`](#qiskit.transpiler.CouplingMap.distance "qiskit.transpiler.CouplingMap.distance") method but can be called if you’re accessing the distance matrix outside of those or want to pre-generate it. @@ -86,7 +86,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### connected\_components - + Separate a [`CouplingMap`](#qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap") into subgraph [`CouplingMap`](#qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap") for each connected component. The connected components of a [`CouplingMap`](#qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap") are the subgraphs that are not part of any larger subgraph. For example, if you had a coupling map that looked like: @@ -142,7 +142,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### distance - + Returns the undirected distance between physical\_qubit1 and physical\_qubit2. **Parameters** @@ -165,7 +165,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### draw - + Draws the coupling map. This function calls the [`graphviz_draw()`](https://www.rustworkx.org/apiref/rustworkx.visualization.graphviz_draw.html#rustworkx.visualization.graphviz_draw "(in rustworkx v0.14)") function from the `rustworkx` package to draw the [`CouplingMap`](#qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap") object. @@ -181,7 +181,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_full - + Return a fully connected coupling map on n qubits. **Return type** @@ -191,7 +191,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_grid - + Return a coupling map of qubits connected on a grid of num\_rows x num\_columns. **Return type** @@ -201,7 +201,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_heavy\_hex - + Return a heavy hexagon graph coupling map. A heavy hexagon graph is described in: @@ -224,7 +224,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_heavy\_square - + Return a heavy square graph coupling map. A heavy square graph is described in: @@ -247,7 +247,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_hexagonal\_lattice - + Return a hexagonal lattice graph coupling map. **Parameters** @@ -267,7 +267,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_line - + Return a coupling map of n qubits connected in a line. **Return type** @@ -277,7 +277,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### from\_ring - + Return a coupling map of n qubits connected to each of their neighbors in a ring. **Return type** @@ -287,7 +287,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### get\_edges - + Gets the list of edges in the coupling graph. **Returns** @@ -301,7 +301,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### is\_connected - + Test if the graph is connected. Return True if connected, False otherwise @@ -309,19 +309,19 @@ python_api_name: qiskit.transpiler.CouplingMap ### largest\_connected\_component - + Return a set of qubits in the largest connected component. ### make\_symmetric - + Convert uni-directional edges into bi-directional. ### neighbors - + Return the nearest neighbors of a physical qubit. Directionality matters, i.e. a neighbor must be reachable by going one hop in the direction of an edge. @@ -329,7 +329,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### reduce - + Returns a reduced coupling map that corresponds to the subgraph of qubits selected in the mapping. **Parameters** @@ -352,7 +352,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### shortest\_undirected\_path - + Returns the shortest undirected path between physical\_qubit1 and physical\_qubit2. **Parameters** @@ -375,7 +375,7 @@ python_api_name: qiskit.transpiler.CouplingMap ### size - + Return the number of physical qubits in this graph. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.InstructionDurations.mdx b/docs/api/qiskit/dev/qiskit.transpiler.InstructionDurations.mdx index 3772b83750a..6e62f79f207 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.InstructionDurations.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.InstructionDurations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.InstructionDurations # InstructionDurations - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Helper class to provide durations of instructions for scheduling. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.InstructionDurations ### from\_backend - + Construct an [`InstructionDurations`](#qiskit.transpiler.InstructionDurations "qiskit.transpiler.InstructionDurations") object from the backend. **Parameters** @@ -41,7 +41,7 @@ python_api_name: qiskit.transpiler.InstructionDurations ### get - + Get the duration of the instruction with the name, qubits, and parameters. Some instructions may have a parameter dependent duration. @@ -68,7 +68,7 @@ python_api_name: qiskit.transpiler.InstructionDurations ### units\_used - + Get the set of all units used in this instruction durations. **Returns** @@ -82,7 +82,7 @@ python_api_name: qiskit.transpiler.InstructionDurations ### update - + Update self with inst\_durations (inst\_durations overwrite self). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.InstructionProperties.mdx b/docs/api/qiskit/dev/qiskit.transpiler.InstructionProperties.mdx index 53e911e105f..b102ab64bd1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.InstructionProperties.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.InstructionProperties.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.InstructionProperties # InstructionProperties - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") A representation of the properties of a gate implementation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.Layout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.Layout.mdx index 449b316dfa4..f8b024fbc99 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.Layout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.Layout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.Layout # Layout - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Two-ways dict to represent a Layout. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.Layout ### add - + Adds a map element between bit and physical\_bit. If physical\_bit is not defined, bit will be mapped to a new physical bit. **Parameters** @@ -30,7 +30,7 @@ python_api_name: qiskit.transpiler.Layout ### add\_register - + Adds at the end physical\_qubits that map each bit in reg. **Parameters** @@ -40,7 +40,7 @@ python_api_name: qiskit.transpiler.Layout ### combine\_into\_edge\_map - + Combines self and another\_layout into an “edge map”. For example: @@ -73,7 +73,7 @@ python_api_name: qiskit.transpiler.Layout ### compose - + Compose this layout with another layout. If this layout represents a mapping from the P-qubits to the positions of the Q-qubits, and the other layout represents a mapping from the Q-qubits to the positions of the R-qubits, then the composed layout represents a mapping from the P-qubits to the positions of the R-qubits. @@ -94,13 +94,13 @@ python_api_name: qiskit.transpiler.Layout ### copy - + Returns a copy of a Layout instance. ### from\_dict - + Populates a Layout from a dictionary. The dictionary must be a bijective mapping between virtual qubits (tuple) and physical qubits (int). @@ -134,7 +134,7 @@ python_api_name: qiskit.transpiler.Layout ### from\_intlist - + Converts a list of integers to a Layout mapping virtual qubits (index of the list) to physical qubits (the list values). **Parameters** @@ -157,7 +157,7 @@ python_api_name: qiskit.transpiler.Layout ### from\_qubit\_list - + Populates a Layout from a list containing virtual qubits, Qubit or None. **Parameters** @@ -180,7 +180,7 @@ python_api_name: qiskit.transpiler.Layout ### generate\_trivial\_layout - + Creates a trivial (“one-to-one”) Layout with the registers and qubits in regs. **Parameters** @@ -198,25 +198,25 @@ python_api_name: qiskit.transpiler.Layout ### get\_physical\_bits - + Returns the dictionary where the keys are physical (qu)bits and the values are virtual (qu)bits. ### get\_registers - + Returns the registers in the layout \[QuantumRegister(2, ‘qr0’), QuantumRegister(3, ‘qr1’)] :returns: A set of Registers in the layout :rtype: Set ### get\_virtual\_bits - + Returns the dictionary where the keys are virtual (qu)bits and the values are physical (qu)bits. ### inverse - + Finds the inverse of this layout. This is possible when the layout is a bijective mapping, however the input and the output qubits may be different (in particular, this layout may be the mapping from the extended-with-ancillas virtual qubits to physical qubits). Thus, if this layout represents a mapping from the P-qubits to the positions of the Q-qubits, the inverse layout represents a mapping from the Q-qubits to the positions of the P-qubits. @@ -233,13 +233,13 @@ python_api_name: qiskit.transpiler.Layout ### order\_based\_on\_type - + decides which one is physical/virtual based on the type. Returns (virtual, physical) ### reorder\_bits - + Given an ordered list of bits, reorder them according to this layout. The list of bits must exactly match the virtual bits in this layout. @@ -259,7 +259,7 @@ python_api_name: qiskit.transpiler.Layout ### swap - + Swaps the map between left and right. **Parameters** @@ -274,7 +274,7 @@ python_api_name: qiskit.transpiler.Layout ### to\_permutation - + Creates a permutation corresponding to this layout. This is possible when the layout is a bijective mapping with the same source and target qubits (for instance, a “final\_layout” corresponds to a permutation of the physical circuit qubits). If this layout is a mapping from qubits to their new positions, the resulting permutation describes which qubits occupy the positions 0, 1, 2, etc. after applying the permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.PassManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.PassManager.mdx index c0007aa0024..1b89dc1c541 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** @@ -38,7 +38,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. @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.PassManager ### remove - + Removes a particular pass in the scheduler. **Parameters** @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.PassManager ### replace - + Replace a particular pass in the scheduler. **Parameters** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.PassManager ### run - + Run all the passes on the specified `circuits`. **Parameters** @@ -141,7 +141,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.PassManagerConfig.mdx b/docs/api/qiskit/dev/qiskit.transpiler.PassManagerConfig.mdx index 75b7766bd2c..8a32473f6bc 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.PassManagerConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.PassManagerConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.PassManagerConfig # PassManagerConfig - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Pass Manager Configuration. @@ -40,7 +40,7 @@ python_api_name: qiskit.transpiler.PassManagerConfig ### from\_backend - + Construct a configuration based on a backend and user input. This method automatically gererates a PassManagerConfig object based on the backend’s features. User options can be used to overwrite the configuration. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.StagedPassManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.StagedPassManager.mdx index 337ba326b60..ed376509b4f 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** @@ -78,13 +78,13 @@ python_api_name: qiskit.transpiler.StagedPassManager ### draw - + Draw the staged pass manager. ### remove - + Removes a particular pass in the scheduler. **Parameters** @@ -98,7 +98,7 @@ python_api_name: qiskit.transpiler.StagedPassManager ### replace - + Replace a particular pass in the scheduler. **Parameters** @@ -109,7 +109,7 @@ python_api_name: qiskit.transpiler.StagedPassManager ### run - + Run all the passes on the specified `circuits`. **Parameters** @@ -161,7 +161,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.Target.mdx b/docs/api/qiskit/dev/qiskit.transpiler.Target.mdx index f66e3a79658..116a4171675 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.Target.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.Target.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.Target # Target - + Bases: [`Mapping`](https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping "(in Python v3.12)") The intent of the `Target` object is to inform Qiskit’s compiler about the constraints of a particular backend so the compiler can compile an input circuit to something that works and is optimized for a device. It currently contains a description of instructions on a backend and their properties as well as some timing information. However, this exact interface may evolve over time as the needs of the compiler change. These changes will be done in a backwards compatible and controlled manner when they are made (either through versioning, subclassing, or mixins) to add on to the set of information exposed by a target. @@ -159,7 +159,7 @@ python_api_name: qiskit.transpiler.Target ### add\_instruction - + Add a new instruction to the [`Target`](#qiskit.transpiler.Target "qiskit.transpiler.Target") As `Target` objects are strictly additive this is the primary method for modifying a `Target`. Typically, you will use this to fully populate a `Target` before using it in [`BackendV2`](qiskit.providers.BackendV2 "qiskit.providers.BackendV2"). For example: @@ -198,7 +198,7 @@ python_api_name: qiskit.transpiler.Target ### build\_coupling\_map - + Get a [`CouplingMap`](qiskit.transpiler.CouplingMap "qiskit.transpiler.CouplingMap") from this target. If there is a mix of two qubit operations that have a connectivity constraint and those that are globally defined this will also return `None` because the globally connectivity means there is no constraint on the target. If you wish to see the constraints of the two qubit operations that have constraints you should use the `two_q_gate` argument to limit the output to the gates which have a constraint. @@ -226,7 +226,7 @@ python_api_name: qiskit.transpiler.Target ### durations - + Get an InstructionDurations object from the target **Returns** @@ -242,7 +242,7 @@ python_api_name: qiskit.transpiler.Target ### from\_configuration - + Create a target object from the individual global configuration Prior to the creation of the [`Target`](#qiskit.transpiler.Target "qiskit.transpiler.Target") class, the constraints of a backend were represented by a collection of different objects which combined represent a subset of the information contained in the [`Target`](#qiskit.transpiler.Target "qiskit.transpiler.Target"). This function provides a simple interface to convert those separate objects to a [`Target`](#qiskit.transpiler.Target "qiskit.transpiler.Target"). @@ -283,7 +283,7 @@ python_api_name: qiskit.transpiler.Target ### get\_calibration - + Get calibrated pulse schedule for the instruction. If calibration is templated with parameters, one can also provide those values to build a schedule with assigned parameters. @@ -306,7 +306,7 @@ python_api_name: qiskit.transpiler.Target ### get\_non\_global\_operation\_names - + Return the non-global operation names for the target The non-global operations are those in the target which don’t apply on all qubits (for single qubit operations) or all multi-qubit qargs (for multi-qubit operations). @@ -326,7 +326,7 @@ python_api_name: qiskit.transpiler.Target ### has\_calibration - + Return whether the instruction (operation + qubits) defines a calibration. **Parameters** @@ -345,7 +345,7 @@ python_api_name: qiskit.transpiler.Target ### instruction\_properties - + Get the instruction properties for a specific instruction tuple This method is to be used in conjunction with the [`instructions`](#qiskit.transpiler.Target.instructions "qiskit.transpiler.Target.instructions") attribute of a [`Target`](#qiskit.transpiler.Target "qiskit.transpiler.Target") object. You can use this method to quickly get the instruction properties for an element of [`instructions`](#qiskit.transpiler.Target.instructions "qiskit.transpiler.Target.instructions") by using the index in that list. However, if you’re not working with [`instructions`](#qiskit.transpiler.Target.instructions "qiskit.transpiler.Target.instructions") directly it is likely more efficient to access the target directly via the name and qubits to get the instruction properties. For example, if [`instructions`](#qiskit.transpiler.Target.instructions "qiskit.transpiler.Target.instructions") returned: @@ -383,7 +383,7 @@ python_api_name: qiskit.transpiler.Target ### instruction\_schedule\_map - + Return an [`InstructionScheduleMap`](qiskit.pulse.InstructionScheduleMap "qiskit.pulse.InstructionScheduleMap") for the instructions in the target with a pulse schedule defined. **Returns** @@ -397,7 +397,7 @@ python_api_name: qiskit.transpiler.Target ### instruction\_supported - + Return whether the instruction (operation + qubits) is supported by the target **Parameters** @@ -436,15 +436,15 @@ python_api_name: qiskit.transpiler.Target ### items - + ### keys - + ### operation\_from\_name - + Get the operation class object for a given name **Parameters** @@ -462,7 +462,7 @@ python_api_name: qiskit.transpiler.Target ### operation\_names\_for\_qargs - + Get the operation names for a specified qargs tuple **Parameters** @@ -484,7 +484,7 @@ python_api_name: qiskit.transpiler.Target ### operations\_for\_qargs - + Get the operation class object for a specified qargs tuple **Parameters** @@ -506,7 +506,7 @@ python_api_name: qiskit.transpiler.Target ### qargs\_for\_operation\_name - + Get the qargs for a given operation name **Parameters** @@ -524,7 +524,7 @@ python_api_name: qiskit.transpiler.Target ### timing\_constraints - + Get an `TimingConstraints` object from the target **Returns** @@ -538,7 +538,7 @@ python_api_name: qiskit.transpiler.Target ### update\_from\_instruction\_schedule\_map - + Update the target from an instruction schedule map. If the input instruction schedule map contains new instructions not in the target they will be added. However, if it contains additional qargs for an existing instruction in the target it will error. @@ -570,7 +570,7 @@ python_api_name: qiskit.transpiler.Target ### update\_instruction\_properties - + Update the property object for an instruction qarg pair already in the Target **Parameters** @@ -586,6 +586,6 @@ python_api_name: qiskit.transpiler.Target ### values - + diff --git a/docs/api/qiskit/dev/qiskit.transpiler.TransformationPass.mdx b/docs/api/qiskit/dev/qiskit.transpiler.TransformationPass.mdx index 257788c66cd..adbbfa1679b 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.TransformationPass.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.TransformationPass.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.TransformationPass # TransformationPass - + Bases: `BasePass` A transformation pass: change DAG, not property set. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.TransformationPass ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.TransformationPass ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.TransformationPass ### run - + Run a pass on the DAGCircuit. This is implemented by the pass developer. **Parameters** @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.TransformationPass ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.TranspileLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.TranspileLayout.mdx index 20a1c335348..868ef148cce 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.TranspileLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.TranspileLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.TranspileLayout # TranspileLayout - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Layout attributes for the output circuit from transpiler. @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.TranspileLayout ### final\_index\_layout - + Generate the final layout as an array of integers. This method will generate an array of final positions for each qubit in the input circuit. For example, if you had an input circuit like: @@ -110,7 +110,7 @@ python_api_name: qiskit.transpiler.TranspileLayout ### final\_virtual\_layout - + Generate the final layout as a [`Layout`](qiskit.transpiler.Layout "qiskit.transpiler.Layout") object. This method will generate an array of final positions for each qubit in the input circuit. For example, if you had an input circuit like: @@ -159,7 +159,7 @@ python_api_name: qiskit.transpiler.TranspileLayout ### initial\_index\_layout - + Generate an initial layout as an array of integers. **Parameters** @@ -177,7 +177,7 @@ python_api_name: qiskit.transpiler.TranspileLayout ### initial\_virtual\_layout - + Return a [`Layout`](qiskit.transpiler.Layout "qiskit.transpiler.Layout") object for the initial layout. This returns a mapping of virtual [`Qubit`](circuit#qiskit.circuit.Qubit "qiskit.circuit.Qubit") objects in the input circuit to the positions of the physical qubits selected during layout. This is analogous to the [`initial_layout`](#qiskit.transpiler.TranspileLayout.initial_layout "qiskit.transpiler.TranspileLayout.initial_layout") attribute. @@ -197,7 +197,7 @@ python_api_name: qiskit.transpiler.TranspileLayout ### routing\_permutation - + Generate a final layout as an array of integers. If there is no [`final_layout`](#qiskit.transpiler.TranspileLayout.final_layout "qiskit.transpiler.TranspileLayout.final_layout") attribute present then that indicates there was no output permutation caused by routing or other transpiler transforms. In this case the function will return a list of `[0, 1, 2, .., n]`. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPSchedule.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPSchedule.mdx index fa7c241f169..b5498c4f776 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPSchedule.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPSchedule.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ALAPSchedule # ALAPSchedule - + Bases: `BaseSchedulerTransform` ALAP Scheduling pass, which schedules the **stop** time of instructions as late as possible. @@ -45,7 +45,7 @@ python_api_name: qiskit.transpiler.passes.ALAPSchedule ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.ALAPSchedule ### name - + Name of the pass. **Return type** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.ALAPSchedule ### run - + Run the ALAPSchedule pass on dag. **Parameters** @@ -98,7 +98,7 @@ python_api_name: qiskit.transpiler.passes.ALAPSchedule ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPScheduleAnalysis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ALAPScheduleAnalysis.mdx index 843b271b075..5de46249e0b 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. @@ -48,7 +48,7 @@ python_api_name: qiskit.transpiler.passes.ALAPScheduleAnalysis ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.transpiler.passes.ALAPScheduleAnalysis ### name - + Name of the pass. **Return type** @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.passes.ALAPScheduleAnalysis ### run - + Run the ALAPSchedule pass on dag. **Parameters** @@ -101,7 +101,7 @@ python_api_name: qiskit.transpiler.passes.ALAPScheduleAnalysis ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPSchedule.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPSchedule.mdx index 03262050ee6..24c097e9d6c 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPSchedule.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPSchedule.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ASAPSchedule # ASAPSchedule - + Bases: `BaseSchedulerTransform` ASAP Scheduling pass, which schedules the start time of instructions as early as possible.. @@ -49,7 +49,7 @@ python_api_name: qiskit.transpiler.passes.ASAPSchedule ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.ASAPSchedule ### name - + Name of the pass. **Return type** @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.passes.ASAPSchedule ### run - + Run the ASAPSchedule pass on dag. **Parameters** @@ -102,7 +102,7 @@ python_api_name: qiskit.transpiler.passes.ASAPSchedule ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPScheduleAnalysis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPScheduleAnalysis.mdx index 9fbc2141bc8..c3b0b180819 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPScheduleAnalysis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ASAPScheduleAnalysis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ASAPScheduleAnalysis # ASAPScheduleAnalysis - + Bases: `BaseScheduler` ASAP Scheduling pass, which schedules the start time of instructions as early as possible. @@ -48,7 +48,7 @@ python_api_name: qiskit.transpiler.passes.ASAPScheduleAnalysis ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.transpiler.passes.ASAPScheduleAnalysis ### name - + Name of the pass. **Return type** @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.passes.ASAPScheduleAnalysis ### run - + Run the ASAPSchedule pass on dag. **Parameters** @@ -101,7 +101,7 @@ python_api_name: qiskit.transpiler.passes.ASAPScheduleAnalysis ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.AlignMeasures.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.AlignMeasures.mdx index ae4509aa675..252d45a9e3f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.AlignMeasures.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.AlignMeasures.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.AlignMeasures # AlignMeasures - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Measurement alignment. @@ -83,7 +83,7 @@ python_api_name: qiskit.transpiler.passes.AlignMeasures ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -103,7 +103,7 @@ python_api_name: qiskit.transpiler.passes.AlignMeasures ### name - + Name of the pass. **Return type** @@ -113,7 +113,7 @@ python_api_name: qiskit.transpiler.passes.AlignMeasures ### run - + Run the measurement alignment pass on dag. **Parameters** @@ -135,7 +135,7 @@ python_api_name: qiskit.transpiler.passes.AlignMeasures ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ApplyLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ApplyLayout.mdx index ec0a9b619fe..672817470d9 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ApplyLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ApplyLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ApplyLayout # ApplyLayout - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Transform a circuit with virtual qubits into a circuit with physical qubits. @@ -39,7 +39,7 @@ python_api_name: qiskit.transpiler.passes.ApplyLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -59,7 +59,7 @@ python_api_name: qiskit.transpiler.passes.ApplyLayout ### name - + Name of the pass. **Return type** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.ApplyLayout ### run - + Run the ApplyLayout pass on `dag`. **Parameters** @@ -91,7 +91,7 @@ python_api_name: qiskit.transpiler.passes.ApplyLayout ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.BarrierBeforeFinalMeasurements.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.BarrierBeforeFinalMeasurements.mdx index 8d2375109a3..b8eff69f1c7 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.BarrierBeforeFinalMeasurements.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.BarrierBeforeFinalMeasurements.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.BarrierBeforeFinalMeasurements # BarrierBeforeFinalMeasurements - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Add a barrier before final measurements. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.BarrierBeforeFinalMeasurements ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.BarrierBeforeFinalMeasurements ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.BarrierBeforeFinalMeasurements ### run - + Run the BarrierBeforeFinalMeasurements pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.BasicSwap.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.BasicSwap.mdx index 91a781fe949..b6eedd0f38c 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.BasicSwap.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.BasicSwap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.BasicSwap # BasicSwap - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Map (with minimum effort) a DAGCircuit onto a `coupling_map` adding swap gates. @@ -44,7 +44,7 @@ python_api_name: qiskit.transpiler.passes.BasicSwap ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.passes.BasicSwap ### name - + Name of the pass. **Return type** @@ -74,7 +74,7 @@ python_api_name: qiskit.transpiler.passes.BasicSwap ### run - + Run the BasicSwap pass on dag. **Parameters** @@ -97,7 +97,7 @@ python_api_name: qiskit.transpiler.passes.BasicSwap ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.BasisTranslator.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.BasisTranslator.mdx index 97bf0af131c..2f90432ebf3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.BasisTranslator.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.BasisTranslator.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.BasisTranslator # BasisTranslator - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Translates gates to a target basis by searching for a set of translations from a given EquivalenceLibrary. @@ -90,7 +90,7 @@ python_api_name: qiskit.transpiler.passes.BasisTranslator ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -110,7 +110,7 @@ python_api_name: qiskit.transpiler.passes.BasisTranslator ### name - + Name of the pass. **Return type** @@ -120,7 +120,7 @@ python_api_name: qiskit.transpiler.passes.BasisTranslator ### run - + Translate an input DAGCircuit to the target basis. **Parameters** @@ -142,7 +142,7 @@ python_api_name: qiskit.transpiler.passes.BasisTranslator ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CSPLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CSPLayout.mdx index d21fe761ac5..74557bea415 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CSPLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CSPLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CSPLayout # CSPLayout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") If possible, chooses a Layout as a CSP, using backtracking. @@ -52,7 +52,7 @@ python_api_name: qiskit.transpiler.passes.CSPLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -72,7 +72,7 @@ python_api_name: qiskit.transpiler.passes.CSPLayout ### name - + Name of the pass. **Return type** @@ -82,13 +82,13 @@ python_api_name: qiskit.transpiler.passes.CSPLayout ### run - + run the layout method ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CXCancellation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CXCancellation.mdx index 1c6357eb149..9ef1567735d 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CXCancellation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CXCancellation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CXCancellation # CXCancellation - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Cancel back-to-back `cx` gates in dag. @@ -39,7 +39,7 @@ python_api_name: qiskit.transpiler.passes.CXCancellation ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -59,7 +59,7 @@ python_api_name: qiskit.transpiler.passes.CXCancellation ### name - + Name of the pass. **Return type** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.CXCancellation ### run - + Run the CXCancellation pass on dag. **Parameters** @@ -87,7 +87,7 @@ python_api_name: qiskit.transpiler.passes.CXCancellation ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckGateDirection.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckGateDirection.mdx index c58ad6f87b6..f0830c55d18 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckGateDirection.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckGateDirection.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CheckGateDirection # CheckGateDirection - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Check if the two-qubit gates follow the right direction with respect to the coupling map. @@ -42,7 +42,7 @@ python_api_name: qiskit.transpiler.passes.CheckGateDirection ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -62,7 +62,7 @@ python_api_name: qiskit.transpiler.passes.CheckGateDirection ### name - + Name of the pass. **Return type** @@ -72,7 +72,7 @@ python_api_name: qiskit.transpiler.passes.CheckGateDirection ### run - + Run the CheckGateDirection pass on dag. If dag is mapped and the direction is correct the property is\_direction\_mapped is set to True (or to False otherwise). @@ -84,7 +84,7 @@ python_api_name: qiskit.transpiler.passes.CheckGateDirection ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckMap.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckMap.mdx index 64df0e9644f..c085638fb13 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckMap.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CheckMap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CheckMap # CheckMap - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Check if a DAG circuit is already mapped to a coupling map. @@ -44,7 +44,7 @@ python_api_name: qiskit.transpiler.passes.CheckMap ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.passes.CheckMap ### name - + Name of the pass. **Return type** @@ -74,7 +74,7 @@ python_api_name: qiskit.transpiler.passes.CheckMap ### run - + Run the CheckMap pass on dag. If dag is mapped to coupling\_map, the property is\_swap\_mapped is set to True (or to False otherwise). @@ -86,7 +86,7 @@ python_api_name: qiskit.transpiler.passes.CheckMap ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect1qRuns.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect1qRuns.mdx index 6b23d30f69e..2f309cafaa7 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect1qRuns.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect1qRuns.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Collect1qRuns # Collect1qRuns - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Collect one-qubit subcircuits. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.Collect1qRuns ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.Collect1qRuns ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.Collect1qRuns ### run - + Run the Collect1qBlocks pass on dag. The blocks contain “op” nodes in topological order such that all gates in a block act on the same qubits and are adjacent in the circuit. @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.Collect1qRuns ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect2qBlocks.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect2qBlocks.mdx index 23608f765db..3bea6670a73 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect2qBlocks.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Collect2qBlocks.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Collect2qBlocks # Collect2qBlocks - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Collect two-qubit subcircuits. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.Collect2qBlocks ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.Collect2qBlocks ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.Collect2qBlocks ### run - + Run the Collect2qBlocks pass on dag. The blocks contain “op” nodes in topological order such that all gates in a block act on the same qubits and are adjacent in the circuit. @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.Collect2qBlocks ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectCliffords.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectCliffords.mdx index 9d6306dec79..5bbd9f09164 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectCliffords.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectCliffords.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CollectCliffords # CollectCliffords - + Bases: `CollectAndCollapse` Collects blocks of Clifford gates and replaces them by a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") object. @@ -45,7 +45,7 @@ python_api_name: qiskit.transpiler.passes.CollectCliffords ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.CollectCliffords ### name - + Name of the pass. **Return type** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.CollectCliffords ### run - + Run the CollectLinearFunctions pass on dag. :param dag: the DAG to be optimized. :type dag: DAGCircuit **Returns** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.CollectCliffords ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectLinearFunctions.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectLinearFunctions.mdx index bcb42e78507..c79a659c46e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectLinearFunctions.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectLinearFunctions.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CollectLinearFunctions # CollectLinearFunctions - + Bases: `CollectAndCollapse` 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")). @@ -45,7 +45,7 @@ python_api_name: qiskit.transpiler.passes.CollectLinearFunctions ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.CollectLinearFunctions ### name - + Name of the pass. **Return type** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.CollectLinearFunctions ### run - + Run the CollectLinearFunctions pass on dag. :param dag: the DAG to be optimized. :type dag: DAGCircuit **Returns** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.CollectLinearFunctions ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectMultiQBlocks.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectMultiQBlocks.mdx index f7e2c299733..d36aac2940a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectMultiQBlocks.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CollectMultiQBlocks.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CollectMultiQBlocks # CollectMultiQBlocks - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Collect sequences of uninterrupted gates acting on groups of qubits. `max_block_size` specifies the maximum number of qubits that can be acted upon by any single group of gates @@ -45,7 +45,7 @@ python_api_name: qiskit.transpiler.passes.CollectMultiQBlocks ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -65,13 +65,13 @@ python_api_name: qiskit.transpiler.passes.CollectMultiQBlocks ### find\_set - + DSU function for finding root of set of items If my parent is myself, I am the root. Otherwise we recursively find the root for my parent. After that, we assign my parent to be my root, saving recursion in the future. ### name - + Name of the pass. **Return type** @@ -81,7 +81,7 @@ python_api_name: qiskit.transpiler.passes.CollectMultiQBlocks ### run - + Run the CollectMultiQBlocks pass on dag. The blocks contain “op” nodes in topological sort order such that all gates in a block act on the same set of qubits and are adjacent in the circuit. @@ -93,13 +93,13 @@ python_api_name: qiskit.transpiler.passes.CollectMultiQBlocks ### union\_set - + DSU function for unioning two sets together Find the roots of each set. Then assign one to have the other as its parent, thus liking the sets. Merges smaller set into larger set in order to have better runtime ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutationAnalysis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutationAnalysis.mdx index 9f533b754ba..9778dd86056 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutationAnalysis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutationAnalysis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CommutationAnalysis # CommutationAnalysis - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Analysis pass to find commutation relations between DAG nodes. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.CommutationAnalysis ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.CommutationAnalysis ### name - + Name of the pass. **Return type** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.CommutationAnalysis ### run - + Run the CommutationAnalysis pass on dag. Run the pass on the DAG, and write the discovered commutation relations into the `property_set`. @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.CommutationAnalysis ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeCancellation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeCancellation.mdx index ca93e65d085..3e26f509ea5 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeCancellation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeCancellation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeCancellation # CommutativeCancellation - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Cancel the redundant (self-adjoint) gates through commutation relations. @@ -48,7 +48,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeCancellation ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeCancellation ### name - + Name of the pass. **Return type** @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeCancellation ### run - + Run the CommutativeCancellation pass on dag. **Parameters** @@ -100,7 +100,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeCancellation ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeInverseCancellation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeInverseCancellation.mdx index 73aaec75705..ef56321cfca 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeInverseCancellation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CommutativeInverseCancellation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeInverseCancellation # CommutativeInverseCancellation - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Cancel pairs of inverse gates exploiting commutation relations. @@ -40,7 +40,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeInverseCancellation ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -60,7 +60,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeInverseCancellation ### name - + Name of the pass. **Return type** @@ -70,7 +70,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeInverseCancellation ### run - + Run the CommutativeInverseCancellation pass on dag. **Parameters** @@ -88,7 +88,7 @@ python_api_name: qiskit.transpiler.passes.CommutativeInverseCancellation ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Commuting2qGateRouter.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Commuting2qGateRouter.mdx index bad8c86ba20..f736e5a94f1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Commuting2qGateRouter.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Commuting2qGateRouter.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Commuting2qGateRouter # Commuting2qGateRouter - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") A class to swap route one or more commuting gates to the coupling map. @@ -97,7 +97,7 @@ python_api_name: qiskit.transpiler.passes.Commuting2qGateRouter ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -117,7 +117,7 @@ python_api_name: qiskit.transpiler.passes.Commuting2qGateRouter ### name - + Name of the pass. **Return type** @@ -127,7 +127,7 @@ python_api_name: qiskit.transpiler.passes.Commuting2qGateRouter ### run - + Run the pass by decomposing the nodes it applies on. **Parameters** @@ -151,7 +151,7 @@ python_api_name: qiskit.transpiler.passes.Commuting2qGateRouter ### swap\_decompose - + Take an instance of `Commuting2qBlock` and map it to the coupling map. The mapping is done with the swap strategy. @@ -174,7 +174,7 @@ python_api_name: qiskit.transpiler.passes.Commuting2qGateRouter ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ConsolidateBlocks.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ConsolidateBlocks.mdx index b146432cf8f..e6ce88b968e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ConsolidateBlocks.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ConsolidateBlocks.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ConsolidateBlocks # ConsolidateBlocks - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Replace each block of consecutive gates by a single Unitary node. @@ -53,7 +53,7 @@ python_api_name: qiskit.transpiler.passes.ConsolidateBlocks ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -73,7 +73,7 @@ python_api_name: qiskit.transpiler.passes.ConsolidateBlocks ### name - + Name of the pass. **Return type** @@ -83,7 +83,7 @@ python_api_name: qiskit.transpiler.passes.ConsolidateBlocks ### run - + Run the ConsolidateBlocks pass on dag. Iterate over each block and replace it with an equivalent Unitary on the same wires. @@ -91,7 +91,7 @@ python_api_name: qiskit.transpiler.passes.ConsolidateBlocks ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ConstrainedReschedule.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ConstrainedReschedule.mdx index 18e9688a53a..bd609dced2f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ConstrainedReschedule.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ConstrainedReschedule.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ConstrainedReschedule # ConstrainedReschedule - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Rescheduler pass that updates node start times to conform to the hardware alignments. @@ -73,7 +73,7 @@ python_api_name: qiskit.transpiler.passes.ConstrainedReschedule ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -93,7 +93,7 @@ python_api_name: qiskit.transpiler.passes.ConstrainedReschedule ### name - + Name of the pass. **Return type** @@ -103,7 +103,7 @@ python_api_name: qiskit.transpiler.passes.ConstrainedReschedule ### run - + Run rescheduler. This pass should perform rescheduling to satisfy: @@ -146,7 +146,7 @@ python_api_name: qiskit.transpiler.passes.ConstrainedReschedule ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ContainsInstruction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ContainsInstruction.mdx index 6aff2046823..0c20bae64a9 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ContainsInstruction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ContainsInstruction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ContainsInstruction # ContainsInstruction - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") An analysis pass to detect if the DAG contains a specific instruction. @@ -44,7 +44,7 @@ python_api_name: qiskit.transpiler.passes.ContainsInstruction ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.passes.ContainsInstruction ### name - + Name of the pass. **Return type** @@ -74,13 +74,13 @@ python_api_name: qiskit.transpiler.passes.ContainsInstruction ### run - + Run the ContainsInstruction pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ConvertConditionsToIfOps.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ConvertConditionsToIfOps.mdx index ed83121956e..abef22d21dc 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ConvertConditionsToIfOps.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ConvertConditionsToIfOps.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ConvertConditionsToIfOps # ConvertConditionsToIfOps - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Convert instructions whose `condition` attribute is set to a non-`None` value into the equivalent single-statement `IfElseBlock`. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.ConvertConditionsToIfOps ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.ConvertConditionsToIfOps ### name - + Name of the pass. **Return type** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.ConvertConditionsToIfOps ### run - + Run a pass on the DAGCircuit. This is implemented by the pass developer. **Parameters** @@ -81,7 +81,7 @@ python_api_name: qiskit.transpiler.passes.ConvertConditionsToIfOps ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOps.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOps.mdx index 5c3719730bd..3ad66b65f59 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOps.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOps.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CountOps # CountOps - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Count the operations in a DAG circuit. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.CountOps ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.CountOps ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.CountOps ### run - + Run the CountOps pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOpsLongestPath.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOpsLongestPath.mdx index 908d8f01891..bd9bdcc21c8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOpsLongestPath.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.CountOpsLongestPath.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.CountOpsLongestPath # CountOpsLongestPath - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Count the operations on the longest path in a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit"). @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.CountOpsLongestPath ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.CountOpsLongestPath ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.CountOpsLongestPath ### run - + Run the CountOpsLongestPath pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGFixedPoint.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGFixedPoint.mdx index f332974fda2..6d4b8c23191 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGFixedPoint.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGFixedPoint.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.DAGFixedPoint # DAGFixedPoint - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Check if the DAG has reached a fixed point. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.DAGFixedPoint ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.DAGFixedPoint ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.DAGFixedPoint ### run - + Run the DAGFixedPoint pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGLongestPath.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGLongestPath.mdx index bb59d91fbb1..d662409db8e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGLongestPath.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.DAGLongestPath.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.DAGLongestPath # DAGLongestPath - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") 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. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.DAGLongestPath ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.DAGLongestPath ### name - + Name of the pass. **Return type** @@ -65,13 +65,13 @@ python_api_name: qiskit.transpiler.passes.DAGLongestPath ### run - + Run the DAGLongestPath pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Decompose.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Decompose.mdx index f57b2aa726b..45d4f14b207 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Decompose.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Decompose.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Decompose # Decompose - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Expand a gate in a circuit using its decomposition rules. @@ -41,7 +41,7 @@ python_api_name: qiskit.transpiler.passes.Decompose ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -61,7 +61,7 @@ python_api_name: qiskit.transpiler.passes.Decompose ### name - + Name of the pass. **Return type** @@ -71,7 +71,7 @@ python_api_name: qiskit.transpiler.passes.Decompose ### run - + Run the Decompose pass on dag. **Parameters** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.Decompose ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.DenseLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.DenseLayout.mdx index b17f19cbaef..fbe1ebc645d 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.DenseLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.DenseLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.DenseLayout # DenseLayout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Choose a Layout by finding the most connected subset of qubits. @@ -49,7 +49,7 @@ python_api_name: qiskit.transpiler.passes.DenseLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.DenseLayout ### name - + Name of the pass. **Return type** @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.passes.DenseLayout ### run - + Run the DenseLayout pass on dag. Pick a convenient layout depending on the best matching qubit connectivity, and set the property layout. @@ -95,7 +95,7 @@ python_api_name: qiskit.transpiler.passes.DenseLayout ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Depth.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Depth.mdx index d6bdb5328a3..ce6bffa5bf3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Depth.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Depth.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Depth # Depth - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Calculate the depth of a DAG circuit. @@ -39,7 +39,7 @@ python_api_name: qiskit.transpiler.passes.Depth ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -59,7 +59,7 @@ python_api_name: qiskit.transpiler.passes.Depth ### name - + Name of the pass. **Return type** @@ -69,13 +69,13 @@ python_api_name: qiskit.transpiler.passes.Depth ### run - + Run the Depth pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.DynamicalDecoupling.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.DynamicalDecoupling.mdx index 2fe380a1f4a..1a6e2377960 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.DynamicalDecoupling.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.DynamicalDecoupling.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.DynamicalDecoupling # DynamicalDecoupling - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Dynamical decoupling insertion pass. @@ -118,7 +118,7 @@ python_api_name: qiskit.transpiler.passes.DynamicalDecoupling ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -138,7 +138,7 @@ python_api_name: qiskit.transpiler.passes.DynamicalDecoupling ### name - + Name of the pass. **Return type** @@ -148,7 +148,7 @@ python_api_name: qiskit.transpiler.passes.DynamicalDecoupling ### run - + Run the DynamicalDecoupling pass on dag. **Parameters** @@ -172,7 +172,7 @@ python_api_name: qiskit.transpiler.passes.DynamicalDecoupling ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.EchoRZXWeylDecomposition.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.EchoRZXWeylDecomposition.mdx index 8e5219918c1..d789a4c67c4 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.EchoRZXWeylDecomposition.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.EchoRZXWeylDecomposition.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.EchoRZXWeylDecomposition # EchoRZXWeylDecomposition - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Rewrite two-qubit gates using the Weyl decomposition. @@ -44,7 +44,7 @@ python_api_name: qiskit.transpiler.passes.EchoRZXWeylDecomposition ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.passes.EchoRZXWeylDecomposition ### name - + Name of the pass. **Return type** @@ -74,7 +74,7 @@ python_api_name: qiskit.transpiler.passes.EchoRZXWeylDecomposition ### run - + Run the EchoRZXWeylDecomposition pass on dag. Rewrites two-qubit gates in an arbitrary circuit in terms of echoed cross-resonance gates by computing the Weyl decomposition of the corresponding unitary. Modifies the input dag. @@ -98,7 +98,7 @@ python_api_name: qiskit.transpiler.passes.EchoRZXWeylDecomposition ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ElidePermutations.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ElidePermutations.mdx new file mode 100644 index 00000000000..3b53b035231 --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ElidePermutations.mdx @@ -0,0 +1,119 @@ +--- +title: ElidePermutations +description: API reference for qiskit.transpiler.passes.ElidePermutations +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.ElidePermutations +--- + +# ElidePermutations + + + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") + + Remove 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 [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") and when a [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate") or [`PermutationGate`](qiskit.circuit.library.PermutationGate "qiskit.circuit.library.PermutationGate") are encountered it permutes the virtual qubits in the circuit and removes the swap gate. This will effectively remove any `SwapGate`s or `PermutationGate` in the circuit prior to running layout. If this pass is run after a layout has been set it will become a no-op (and log a warning) as this optimization is not sound after physical qubits are selected and there are connectivity constraints to adhere to. + + For tracking purposes this pass sets 3 values in the property set if there are any [`SwapGate`](qiskit.circuit.library.SwapGate "qiskit.circuit.library.SwapGate") or [`PermutationGate`](qiskit.circuit.library.PermutationGate "qiskit.circuit.library.PermutationGate") objects in the circuit and the pass isn’t a no-op. + + * `original_layout`: The trivial [`Layout`](qiskit.transpiler.Layout "qiskit.transpiler.Layout") for the input to this pass being run + + * **`original_qubit_indices`: The mapping of qubit objects to positional indices for the state** + + of the circuit as input to this pass. + + * **`virtual_permutation_layout`: A [`Layout`](qiskit.transpiler.Layout "qiskit.transpiler.Layout") object mapping input qubits to the output** + + state after eliding permutations. + + These three properties are needed for the transpiler to track the permutations in the out [`QuantumCircuit.layout`](qiskit.circuit.QuantumCircuit#layout "qiskit.circuit.QuantumCircuit.layout") attribute. The elision of permutations is equivalent to a `final_layout` set by routing and all three of these attributes are needed in the case + + ## 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.12)")) – 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.12)") *| 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.12)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)"), [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.12)") + + + ### run + + + Run the ElidePermutations 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.EnlargeWithAncilla.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.EnlargeWithAncilla.mdx index cd9a7057b99..939ba45bf35 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.EnlargeWithAncilla.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.EnlargeWithAncilla.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.EnlargeWithAncilla # EnlargeWithAncilla - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Extend the dag with virtual qubits that are in layout but not in the circuit yet. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.EnlargeWithAncilla ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.EnlargeWithAncilla ### name - + Name of the pass. **Return type** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.EnlargeWithAncilla ### run - + Run the EnlargeWithAncilla pass on dag. **Parameters** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.EnlargeWithAncilla ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.FilterOpNodes.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.FilterOpNodes.mdx index fb96dfee80d..b88794ce84a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.FilterOpNodes.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.FilterOpNodes.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.FilterOpNodes # FilterOpNodes - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Remove all operations that match a filter function @@ -62,7 +62,7 @@ python_api_name: qiskit.transpiler.passes.FilterOpNodes ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -82,7 +82,7 @@ python_api_name: qiskit.transpiler.passes.FilterOpNodes ### name - + Name of the pass. **Return type** @@ -92,7 +92,7 @@ python_api_name: qiskit.transpiler.passes.FilterOpNodes ### run - + Run the RemoveBarriers pass on dag. **Return type** @@ -102,7 +102,7 @@ python_api_name: qiskit.transpiler.passes.FilterOpNodes ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.FixedPoint.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.FixedPoint.mdx index a12409988b5..c542b9b1fd3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.FixedPoint.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.FixedPoint.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.FixedPoint # FixedPoint - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Check if a property reached a fixed point. @@ -43,7 +43,7 @@ python_api_name: qiskit.transpiler.passes.FixedPoint ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -63,7 +63,7 @@ python_api_name: qiskit.transpiler.passes.FixedPoint ### name - + Name of the pass. **Return type** @@ -73,13 +73,13 @@ python_api_name: qiskit.transpiler.passes.FixedPoint ### run - + Run the FixedPoint pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.FullAncillaAllocation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.FullAncillaAllocation.mdx index 6af58e7e16c..e6ea3e91e2f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.FullAncillaAllocation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.FullAncillaAllocation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.FullAncillaAllocation # FullAncillaAllocation - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Allocate all idle nodes from the coupling map or target as ancilla on the layout. @@ -47,7 +47,7 @@ python_api_name: qiskit.transpiler.passes.FullAncillaAllocation ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.FullAncillaAllocation ### name - + Name of the pass. **Return type** @@ -77,7 +77,7 @@ python_api_name: qiskit.transpiler.passes.FullAncillaAllocation ### run - + Run the FullAncillaAllocation pass on dag. Extend the layout with new (physical qubit, virtual qubit) pairs. The dag signals which virtual qubits are already in the circuit. This pass will allocate new virtual qubits such that no collision occurs (i.e. Layout bijectivity is preserved) @@ -103,7 +103,7 @@ python_api_name: qiskit.transpiler.passes.FullAncillaAllocation ### update\_status - + Update workflow status. **Parameters** @@ -122,7 +122,7 @@ python_api_name: qiskit.transpiler.passes.FullAncillaAllocation ### validate\_layout - + Checks if all the qregs in `layout_qregs` already exist in `dag_qregs`. Otherwise, raise. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.GateDirection.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.GateDirection.mdx index 7494a0b8776..90ccd9dd52c 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.GateDirection.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.GateDirection.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.GateDirection # GateDirection - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Modify asymmetric gates to match the hardware coupling direction. @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.GateDirection ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.GateDirection ### name - + Name of the pass. **Return type** @@ -99,7 +99,7 @@ python_api_name: qiskit.transpiler.passes.GateDirection ### run - + Run the GateDirection pass on dag. Flips the cx nodes to match the directed coupling map. Modifies the input dag. @@ -123,7 +123,7 @@ python_api_name: qiskit.transpiler.passes.GateDirection ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.GatesInBasis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.GatesInBasis.mdx index b91cd77070f..91679d51a34 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.GatesInBasis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.GatesInBasis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.GatesInBasis # GatesInBasis - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Check if all gates in a DAG are in a given set of gates @@ -42,7 +42,7 @@ python_api_name: qiskit.transpiler.passes.GatesInBasis ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -62,7 +62,7 @@ python_api_name: qiskit.transpiler.passes.GatesInBasis ### name - + Name of the pass. **Return type** @@ -72,13 +72,13 @@ python_api_name: qiskit.transpiler.passes.GatesInBasis ### run - + Run the GatesInBasis pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.HLSConfig.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.HLSConfig.mdx index 20322e5df33..1a2649c061b 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.HLSConfig.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.HLSConfig.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.HLSConfig # HLSConfig - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") 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. @@ -50,13 +50,15 @@ python_api_name: qiskit.transpiler.passes.HLSConfig **Parameters** * **use\_default\_on\_unspecified** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – if True, every higher-level-object without an explicitly specified list of methods will be synthesized using the “default” algorithm if it exists. + * **plugin\_selection** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – if set to `"sequential"` (default), for every higher-level-object the synthesis pass will consider the specified methods sequentially, stopping at the first method that is able to synthesize the object. If set to `"all"`, all the specified methods will be considered, and the best synthesized circuit, according to `plugin_evaluation_fn` will be chosen. + * **plugin\_evaluation\_fn** ([*Callable*](https://docs.python.org/3/library/typing.html#typing.Callable "(in Python v3.12)")*\[\[*[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")*],* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – a callable that evaluates the quality of the synthesized quantum circuit; a smaller value means a better circuit. If `None`, the quality of the circuit its size (i.e. the number of gates that it contains). * **kwargs** – a dictionary mapping higher-level-objects to lists of synthesis methods. ## Methods ### set\_methods - + Sets the list of synthesis methods for a given higher-level-object. This overwrites the lists of methods if also set previously. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.HighLevelSynthesis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.HighLevelSynthesis.mdx index 9eef8b3ed9d..caaf4d2e9d7 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.HighLevelSynthesis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.HighLevelSynthesis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.HighLevelSynthesis # HighLevelSynthesis - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Synthesize higher-level objects and unroll custom definitions. @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.HighLevelSynthesis ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.HighLevelSynthesis ### name - + Name of the pass. **Return type** @@ -99,7 +99,7 @@ python_api_name: qiskit.transpiler.passes.HighLevelSynthesis ### run - + Run the HighLevelSynthesis pass on dag. **Parameters** @@ -122,7 +122,7 @@ python_api_name: qiskit.transpiler.passes.HighLevelSynthesis ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.HoareOptimizer.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.HoareOptimizer.mdx index b10e4b1c37e..df1dbe43d53 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.HoareOptimizer.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.HoareOptimizer.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.HoareOptimizer # HoareOptimizer - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") This is a transpiler pass using Hoare logic circuit optimization. The inner workings of this are detailed in: [https://arxiv.org/abs/1810.00375](https://arxiv.org/abs/1810.00375) @@ -43,7 +43,7 @@ python_api_name: qiskit.transpiler.passes.HoareOptimizer ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -63,7 +63,7 @@ python_api_name: qiskit.transpiler.passes.HoareOptimizer ### name - + Name of the pass. **Return type** @@ -73,7 +73,7 @@ python_api_name: qiskit.transpiler.passes.HoareOptimizer ### run - + **Parameters** **dag** ([*DAGCircuit*](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – the directed acyclic graph to run on. @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.HoareOptimizer ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.InstructionDurationCheck.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.InstructionDurationCheck.mdx index 5dd4210762a..bac79bf4969 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. @@ -49,7 +49,7 @@ python_api_name: qiskit.transpiler.passes.InstructionDurationCheck ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.InstructionDurationCheck ### name - + Name of the pass. **Return type** @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.passes.InstructionDurationCheck ### run - + Run duration validation passes. **Parameters** @@ -89,7 +89,7 @@ python_api_name: qiskit.transpiler.passes.InstructionDurationCheck ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.InverseCancellation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.InverseCancellation.mdx index b4f4b36fbbb..db3abdb7dc5 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. @@ -45,7 +45,7 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation ### name - + Name of the pass. **Return type** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation ### run - + Run the InverseCancellation pass on dag. **Parameters** @@ -93,7 +93,7 @@ python_api_name: qiskit.transpiler.passes.InverseCancellation ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Layout2qDistance.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Layout2qDistance.mdx index 5195f936e75..6dd2caad45f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Layout2qDistance.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Layout2qDistance.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Layout2qDistance # Layout2qDistance - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Evaluate how good the layout selection was. @@ -44,7 +44,7 @@ python_api_name: qiskit.transpiler.passes.Layout2qDistance ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -64,7 +64,7 @@ python_api_name: qiskit.transpiler.passes.Layout2qDistance ### name - + Name of the pass. **Return type** @@ -74,13 +74,13 @@ python_api_name: qiskit.transpiler.passes.Layout2qDistance ### run - + Run the Layout2qDistance pass on dag. :param dag: DAG to evaluate. :type dag: DAGCircuit ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.LinearFunctionsToPermutations.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.LinearFunctionsToPermutations.mdx index 1e4b00601f5..24d572022f1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.LinearFunctionsToPermutations.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.LinearFunctionsToPermutations.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.LinearFunctionsToPermutations # LinearFunctionsToPermutations - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Promotes linear functions to permutations when possible. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.LinearFunctionsToPermutations ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.LinearFunctionsToPermutations ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.LinearFunctionsToPermutations ### run - + Run the LinearFunctionsToPermutations pass on dag. :param dag: input dag. **Returns** @@ -79,7 +79,7 @@ python_api_name: qiskit.transpiler.passes.LinearFunctionsToPermutations ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.LookaheadSwap.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.LookaheadSwap.mdx index 7cf0ec554aa..3c101b8dd87 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.LookaheadSwap.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.LookaheadSwap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.LookaheadSwap # LookaheadSwap - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Map input circuit onto a backend topology via insertion of SWAPs. @@ -60,7 +60,7 @@ python_api_name: qiskit.transpiler.passes.LookaheadSwap ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -80,7 +80,7 @@ python_api_name: qiskit.transpiler.passes.LookaheadSwap ### name - + Name of the pass. **Return type** @@ -90,7 +90,7 @@ python_api_name: qiskit.transpiler.passes.LookaheadSwap ### run - + Run the LookaheadSwap pass on dag. **Parameters** @@ -115,7 +115,7 @@ python_api_name: qiskit.transpiler.passes.LookaheadSwap ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.MergeAdjacentBarriers.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.MergeAdjacentBarriers.mdx index 95b5890aacb..219ba821033 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.MergeAdjacentBarriers.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.MergeAdjacentBarriers.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.MergeAdjacentBarriers # MergeAdjacentBarriers - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Return a circuit with any adjacent barriers merged together. @@ -72,7 +72,7 @@ python_api_name: qiskit.transpiler.passes.MergeAdjacentBarriers ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -92,7 +92,7 @@ python_api_name: qiskit.transpiler.passes.MergeAdjacentBarriers ### name - + Name of the pass. **Return type** @@ -102,13 +102,13 @@ python_api_name: qiskit.transpiler.passes.MergeAdjacentBarriers ### run - + Run the MergeAdjacentBarriers pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.MinimumPoint.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.MinimumPoint.mdx index f58878a1db7..69707cb480f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.MinimumPoint.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.MinimumPoint.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.MinimumPoint # MinimumPoint - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Check if the DAG has reached a relative semi-stable point over previous runs @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.MinimumPoint ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.MinimumPoint ### name - + Name of the pass. **Return type** @@ -85,13 +85,13 @@ python_api_name: qiskit.transpiler.passes.MinimumPoint ### run - + Run the MinimumPoint pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.NormalizeRXAngle.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.NormalizeRXAngle.mdx index 1d0ea4025c0..a1f0dc198e3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.NormalizeRXAngle.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.NormalizeRXAngle.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.NormalizeRXAngle # NormalizeRXAngle - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Normalize theta parameter of RXGate instruction. @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.NormalizeRXAngle ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -77,7 +77,7 @@ python_api_name: qiskit.transpiler.passes.NormalizeRXAngle ### name - + Name of the pass. **Return type** @@ -87,7 +87,7 @@ python_api_name: qiskit.transpiler.passes.NormalizeRXAngle ### quantize\_angles - + Quantize the RX rotation angles by assigning the same value for the angles that differ within a resolution provided by the user. **Parameters** @@ -106,7 +106,7 @@ python_api_name: qiskit.transpiler.passes.NormalizeRXAngle ### run - + Run the NormalizeRXAngle pass on `dag`. **Parameters** @@ -124,7 +124,7 @@ python_api_name: qiskit.transpiler.passes.NormalizeRXAngle ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.NumTensorFactors.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.NumTensorFactors.mdx index c5b963cce8f..2940ccf098e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.NumTensorFactors.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.NumTensorFactors.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.NumTensorFactors # NumTensorFactors - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Calculate the number of tensor factors of a DAG circuit. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.NumTensorFactors ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.NumTensorFactors ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.NumTensorFactors ### run - + Run the NumTensorFactors pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGates.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGates.mdx index 5af460cd11d..9e7976ffc93 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGates.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGates.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates # Optimize1qGates - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Optimize chains of single-qubit u1, u2, u3 gates by combining them into a single gate. @@ -43,7 +43,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates ### compose\_u3 - + Return a triple theta, phi, lambda for the product. **u3(theta, phi, lambda)** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates ### name - + Name of the pass. **Return type** @@ -85,7 +85,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates ### run - + Run the Optimize1qGates pass on dag. **Parameters** @@ -107,7 +107,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates ### update\_status - + Update workflow status. **Parameters** @@ -126,7 +126,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGates ### yzy\_to\_zyz - + Express a Y.Z.Y single qubit gate as a Z.Y.Z gate. Solve the equation diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesDecomposition.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesDecomposition.mdx index 065193b94e9..07568b1ef66 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesDecomposition.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesDecomposition.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesDecomposition # Optimize1qGatesDecomposition - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Optimize chains of single-qubit gates by combining them into a single gate. @@ -51,7 +51,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesDecomposition ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -71,7 +71,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesDecomposition ### name - + Name of the pass. **Return type** @@ -81,7 +81,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesDecomposition ### run - + Run the Optimize1qGatesDecomposition pass on dag. **Parameters** @@ -99,7 +99,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesDecomposition ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation.mdx index 5bbd3ac6849..7e517622763 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation # Optimize1qGatesSimpleCommutation - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Optimizes 1Q gate strings interrupted by 2Q gates by commuting the components and resynthesizing the results. The commutation rules are stored in `commutation_table`. @@ -47,7 +47,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation ### name - + Name of the pass. **Return type** @@ -77,7 +77,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation ### run - + **Parameters** **dag** ([*DAGCircuit*](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – the DAG to be optimized. @@ -93,7 +93,7 @@ python_api_name: qiskit.transpiler.passes.Optimize1qGatesSimpleCommutation ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeAnnotated.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeAnnotated.mdx index dc9533a8412..c597d7d15f8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeAnnotated.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeAnnotated.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated # OptimizeAnnotated - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Optimization pass on circuits with annotated operations. @@ -18,6 +18,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated * For each annotated operation, converting the list of its modifiers to a canonical form. For example, consecutively applying `inverse()`, `control(2)` and `inverse()` is equivalent to applying `control(2)`. * Removing annotations when possible. For example, `AnnotatedOperation(SwapGate(), [InverseModifier(), InverseModifier()])` is equivalent to `SwapGate()`. * Recursively combining annotations. For example, if `g1 = AnnotatedOperation(SwapGate(), InverseModifier())` and `g2 = AnnotatedOperation(g1, ControlModifier(2))`, then `g2` can be replaced with `AnnotatedOperation(SwapGate(), [InverseModifier(), ControlModifier(2)])`. + * Applies conjugate reduction to annotated operations. As an example, `control - [P -- Q -- P^{-1}]` can be rewritten as `P -- control - [Q] -- P^{-1}`, that is, only the middle part needs to be controlled. This also works for inverse and power modifiers. OptimizeAnnotated initializer. @@ -27,6 +28,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated * **equivalence\_library** – The equivalence library used (instructions in this library will not be optimized by this pass). * **basis\_gates** – Optional, target basis names to unroll to, e.g. \[‘u3’, ‘cx’] (instructions in this list will not be optimized by this pass). Ignored if `target` is also specified. * **recurse** – By default, when either `target` or `basis_gates` is specified, the pass recursively descends into gate definitions (and the recursion is not applied when neither is specified since such objects do not need to be synthesized). Setting this value to `False` precludes the recursion in every case. + * **do\_conjugate\_reduction** – controls whether conjugate reduction should be performed. ## Attributes @@ -50,7 +52,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -70,7 +72,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated ### name - + Name of the pass. **Return type** @@ -80,7 +82,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated ### run - + Run the OptimizeAnnotated pass on dag. **Parameters** @@ -98,7 +100,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeAnnotated ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffords.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffords.mdx index 42c07407452..712eed6acf8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffords.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.OptimizeCliffords.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeCliffords # OptimizeCliffords - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Combine consecutive Cliffords over the same qubits. This serves as an example of extra capabilities enabled by storing Cliffords natively on the circuit. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeCliffords ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeCliffords ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeCliffords ### run - + Run the OptimizeCliffords pass on dag. **Parameters** @@ -83,7 +83,7 @@ python_api_name: qiskit.transpiler.passes.OptimizeCliffords ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx index e256779a4d9..73a80e439b3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDelay.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay # PadDelay - + Bases: `BasePadding` Padding idle time with Delay instructions. @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -87,7 +87,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay ### name - + Name of the pass. **Return type** @@ -97,7 +97,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay ### run - + Run the padding pass on `dag`. **Parameters** @@ -119,7 +119,7 @@ python_api_name: qiskit.transpiler.passes.PadDelay ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx index 5e03bc54d64..25f44ff59fb 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.PadDynamicalDecoupling.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling # PadDynamicalDecoupling - + Bases: `BasePadding` Dynamical decoupling insertion pass. @@ -125,7 +125,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -145,7 +145,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling ### name - + Name of the pass. **Return type** @@ -155,7 +155,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling ### run - + Run the padding pass on `dag`. **Parameters** @@ -177,7 +177,7 @@ python_api_name: qiskit.transpiler.passes.PadDynamicalDecoupling ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.PulseGates.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.PulseGates.mdx index 3354d1c25e5..c4445e84faa 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.PulseGates.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.PulseGates.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates # PulseGates - + Bases: `CalibrationBuilder` Pulse gate adding pass. @@ -54,7 +54,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -74,7 +74,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates ### get\_calibration - + Gets the calibrated schedule for the given instruction and qubits. **Parameters** @@ -97,7 +97,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates ### name - + Name of the pass. **Return type** @@ -107,7 +107,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates ### run - + Run the calibration adder pass on dag. **Parameters** @@ -125,7 +125,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates ### supported - + Determine if a given node supports the calibration. **Parameters** @@ -144,7 +144,7 @@ python_api_name: qiskit.transpiler.passes.PulseGates ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RXCalibrationBuilder.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RXCalibrationBuilder.mdx index 63d2a0bb866..48cbc7ebd34 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RXCalibrationBuilder.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RXCalibrationBuilder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder # RXCalibrationBuilder - + Bases: `CalibrationBuilder` Add single-pulse RX calibrations that are bootstrapped from the SX calibration. @@ -85,7 +85,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -105,7 +105,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder ### get\_calibration - + Generate RX calibration for the rotation angle specified in node\_op. **Return type** @@ -115,7 +115,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder ### name - + Name of the pass. **Return type** @@ -125,7 +125,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder ### run - + Run the calibration adder pass on dag. **Parameters** @@ -143,7 +143,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder ### supported - + Check if the calibration for SX gate exists and it’s a single DRAG pulse. **Return type** @@ -153,7 +153,7 @@ python_api_name: qiskit.transpiler.passes.RXCalibrationBuilder ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilder.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilder.mdx index 66959e1ce99..49d43e27b84 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilder.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilder.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder # RZXCalibrationBuilder - + Bases: `CalibrationBuilder` Creates calibrations for RZXGate(theta) by stretching and compressing Gaussian square pulses in the CX gate. This is done by retrieving (for a given pair of qubits) the CX schedule in the instruction schedule map of the backend defaults. The CX schedule must be an echoed cross-resonance gate optionally with rotary tones. The cross-resonance drive tones and rotary pulses must be Gaussian square pulses. The width of the Gaussian square pulse is adjusted so as to match the desired rotation angle. If the rotation angle is small such that the width disappears then the amplitude of the zero width Gaussian square pulse (i.e. a Gaussian) is reduced to reach the target rotation angle. Additional details can be found in [https://arxiv.org/abs/2012.11660](https://arxiv.org/abs/2012.11660). @@ -47,7 +47,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### get\_calibration - + Builds the calibration schedule for the RZXGate(theta) with echos. **Parameters** @@ -92,7 +92,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### name - + Name of the pass. **Return type** @@ -102,7 +102,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### rescale\_cr\_inst - + A builder macro to play stretched pulse. **Parameters** @@ -126,7 +126,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### run - + Run the calibration adder pass on dag. **Parameters** @@ -144,7 +144,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### supported - + Determine if a given node supports the calibration. **Parameters** @@ -163,7 +163,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilder ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho.mdx index 8a3323df81f..93d0508f800 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho # RZXCalibrationBuilderNoEcho - + Bases: [`RZXCalibrationBuilder`](qiskit.transpiler.passes.RZXCalibrationBuilder "qiskit.transpiler.passes.calibration.rzx_builder.RZXCalibrationBuilder") Creates calibrations for RZXGate(theta) by stretching and compressing Gaussian square pulses in the CX gate. @@ -49,7 +49,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### get\_calibration - + Builds the calibration schedule for the RZXGate(theta) without echos. **Parameters** @@ -94,7 +94,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### name - + Name of the pass. **Return type** @@ -104,7 +104,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### rescale\_cr\_inst - + A builder macro to play stretched pulse. **Parameters** @@ -128,7 +128,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### run - + Run the calibration adder pass on dag. **Parameters** @@ -146,7 +146,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### supported - + Determine if a given node supports the calibration. **Parameters** @@ -165,7 +165,7 @@ python_api_name: qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveBarriers.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveBarriers.mdx index c504c36b38d..736061681b1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveBarriers.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveBarriers.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RemoveBarriers # RemoveBarriers - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Return a circuit with any barrier removed. @@ -54,7 +54,7 @@ python_api_name: qiskit.transpiler.passes.RemoveBarriers ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -74,7 +74,7 @@ python_api_name: qiskit.transpiler.passes.RemoveBarriers ### name - + Name of the pass. **Return type** @@ -84,7 +84,7 @@ python_api_name: qiskit.transpiler.passes.RemoveBarriers ### run - + Run the RemoveBarriers pass on dag. **Return type** @@ -94,7 +94,7 @@ python_api_name: qiskit.transpiler.passes.RemoveBarriers ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure.mdx index 2d82335cecb..bc361ad914f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure # RemoveDiagonalGatesBeforeMeasure - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Remove diagonal gates (including diagonal 2Q gates) before a measurement. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure ### name - + Name of the pass. **Return type** @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure ### run - + Run the RemoveDiagonalGatesBeforeMeasure pass on dag. **Parameters** @@ -85,7 +85,7 @@ python_api_name: qiskit.transpiler.passes.RemoveDiagonalGatesBeforeMeasure ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalMeasurements.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalMeasurements.mdx index cc5ca668310..0db7919ec1c 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalMeasurements.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalMeasurements.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalMeasurements # RemoveFinalMeasurements - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Remove final measurements and barriers at the end of a circuit. @@ -39,7 +39,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalMeasurements ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -59,7 +59,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalMeasurements ### name - + Name of the pass. **Return type** @@ -69,7 +69,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalMeasurements ### run - + Run the RemoveFinalMeasurements pass on dag. **Parameters** @@ -87,7 +87,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalMeasurements ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalReset.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalReset.mdx index f5a7e7a873d..62cc0b23051 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalReset.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveFinalReset.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalReset # RemoveFinalReset - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Remove reset when it is the final instruction on a qubit wire. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalReset ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalReset ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalReset ### run - + Run the RemoveFinalReset pass on dag. **Parameters** @@ -83,7 +83,7 @@ python_api_name: qiskit.transpiler.passes.RemoveFinalReset ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveResetInZeroState.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveResetInZeroState.mdx index 062b3543635..138e257fddb 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveResetInZeroState.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.RemoveResetInZeroState.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.RemoveResetInZeroState # RemoveResetInZeroState - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Remove reset gate when the qubit is in zero state. @@ -35,7 +35,7 @@ python_api_name: qiskit.transpiler.passes.RemoveResetInZeroState ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -55,7 +55,7 @@ python_api_name: qiskit.transpiler.passes.RemoveResetInZeroState ### name - + Name of the pass. **Return type** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.RemoveResetInZeroState ### run - + Run the RemoveResetInZeroState pass on dag. **Parameters** @@ -83,7 +83,7 @@ python_api_name: qiskit.transpiler.passes.RemoveResetInZeroState ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ResetAfterMeasureSimplification.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ResetAfterMeasureSimplification.mdx index 56dfe39421e..9d303195485 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ResetAfterMeasureSimplification.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ResetAfterMeasureSimplification.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ResetAfterMeasureSimplification # ResetAfterMeasureSimplification - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") This pass replaces reset after measure with a conditional X gate. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.ResetAfterMeasureSimplification ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.ResetAfterMeasureSimplification ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.ResetAfterMeasureSimplification ### run - + Run the pass on a dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreLayout.mdx index 361a8a188db..4f003f0af01 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.SabreLayout # SabreLayout - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Choose a Layout via iterative bidirectional routing of the input circuit. @@ -129,7 +129,7 @@ python_api_name: qiskit.transpiler.passes.SabreLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -149,7 +149,7 @@ python_api_name: qiskit.transpiler.passes.SabreLayout ### name - + Name of the pass. **Return type** @@ -159,7 +159,7 @@ python_api_name: qiskit.transpiler.passes.SabreLayout ### run - + Run the SabreLayout pass on dag. **Parameters** @@ -183,7 +183,7 @@ python_api_name: qiskit.transpiler.passes.SabreLayout ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.SabrePreLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.SabrePreLayout.mdx index 60581561aaa..2b5a2bb9202 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.SabrePreLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.SabrePreLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.SabrePreLayout # SabrePreLayout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Choose a starting layout to use for additional Sabre layout trials. @@ -99,7 +99,7 @@ python_api_name: qiskit.transpiler.passes.SabrePreLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -119,7 +119,7 @@ python_api_name: qiskit.transpiler.passes.SabrePreLayout ### name - + Name of the pass. **Return type** @@ -129,7 +129,7 @@ python_api_name: qiskit.transpiler.passes.SabrePreLayout ### run - + Run the SabrePreLayout pass on dag. The discovered starting layout is written to the property set value `sabre_starting_layouts`. @@ -141,7 +141,7 @@ python_api_name: qiskit.transpiler.passes.SabrePreLayout ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreSwap.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreSwap.mdx index 4bed3fdb168..34864b89cc1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreSwap.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.SabreSwap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.SabreSwap # SabreSwap - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Map input circuit onto a backend topology via insertion of SWAPs. @@ -95,7 +95,7 @@ python_api_name: qiskit.transpiler.passes.SabreSwap ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -115,7 +115,7 @@ python_api_name: qiskit.transpiler.passes.SabreSwap ### name - + Name of the pass. **Return type** @@ -125,7 +125,7 @@ python_api_name: qiskit.transpiler.passes.SabreSwap ### run - + Run the SabreSwap pass on dag. **Parameters** @@ -148,7 +148,7 @@ python_api_name: qiskit.transpiler.passes.SabreSwap ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.SetIOLatency.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.SetIOLatency.mdx index 14a044881b1..7d547597a83 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.SetIOLatency.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.SetIOLatency.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.SetIOLatency # SetIOLatency - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Set IOLatency information to the input circuit. @@ -46,7 +46,7 @@ python_api_name: qiskit.transpiler.passes.SetIOLatency ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -66,7 +66,7 @@ python_api_name: qiskit.transpiler.passes.SetIOLatency ### name - + Name of the pass. **Return type** @@ -76,7 +76,7 @@ python_api_name: qiskit.transpiler.passes.SetIOLatency ### run - + Add IO latency information. **Parameters** @@ -86,7 +86,7 @@ python_api_name: qiskit.transpiler.passes.SetIOLatency ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.SetLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.SetLayout.mdx index 972d2f314f9..5b7e8551d90 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.SetLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.SetLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.SetLayout # SetLayout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Set the `layout` property to the given layout. @@ -48,7 +48,7 @@ python_api_name: qiskit.transpiler.passes.SetLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -68,7 +68,7 @@ python_api_name: qiskit.transpiler.passes.SetLayout ### name - + Name of the pass. **Return type** @@ -78,7 +78,7 @@ python_api_name: qiskit.transpiler.passes.SetLayout ### run - + Run the SetLayout pass on `dag`. **Parameters** @@ -96,7 +96,7 @@ python_api_name: qiskit.transpiler.passes.SetLayout ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Size.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Size.mdx index 2516a9bfc9a..e7115a39c11 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Size.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Size.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Size # Size - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Calculate the size of a DAG circuit. @@ -41,7 +41,7 @@ python_api_name: qiskit.transpiler.passes.Size ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -61,7 +61,7 @@ python_api_name: qiskit.transpiler.passes.Size ### name - + Name of the pass. **Return type** @@ -71,13 +71,13 @@ python_api_name: qiskit.transpiler.passes.Size ### run - + Run the Size pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.SolovayKitaev.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.SolovayKitaev.mdx index 5d9a1781a64..d6fc3d18889 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.SolovayKitaev.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.SolovayKitaev.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.SolovayKitaev # SolovayKitaev - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Approximately decompose 1q gates to a discrete basis using the Solovay-Kitaev algorithm. @@ -124,7 +124,7 @@ python_api_name: qiskit.transpiler.passes.SolovayKitaev ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -144,7 +144,7 @@ python_api_name: qiskit.transpiler.passes.SolovayKitaev ### name - + Name of the pass. **Return type** @@ -154,7 +154,7 @@ python_api_name: qiskit.transpiler.passes.SolovayKitaev ### run - + Run the `SolovayKitaev` pass on dag. **Parameters** @@ -176,7 +176,7 @@ python_api_name: qiskit.transpiler.passes.SolovayKitaev ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.StarPreRouting.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.StarPreRouting.mdx new file mode 100644 index 00000000000..fbd1ddbfd8a --- /dev/null +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.StarPreRouting.mdx @@ -0,0 +1,164 @@ +--- +title: StarPreRouting +description: API reference for qiskit.transpiler.passes.StarPreRouting +in_page_toc_min_heading_level: 1 +python_api_type: class +python_api_name: qiskit.transpiler.passes.StarPreRouting +--- + +# StarPreRouting + + + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") + + Run star to linear pre-routing + + This pass is a logical optimization pass that rewrites any solely 2q gate star connectivity subcircuit as a linear connectivity equivalent with swaps. + + For example: + + > ```python + > from qiskit.circuit import QuantumCircuit + > from qiskit.transpiler.passes import StarPreRouting + > + > qc = QuantumCircuit(10) + > qc.h(0) + > qc.cx(0, range(1, 5)) + > qc.h(9) + > qc.cx(9, range(8, 4, -1)) + > qc.measure_all() + > StarPreRouting()(qc).draw("mpl") + > ``` + > + > ![../\_images/qiskit-transpiler-passes-StarPreRouting-1.png](/images/api/qiskit/dev/qiskit-transpiler-passes-StarPreRouting-1.png) + + This pass was inspired by a similar pass described in Section IV of: C. Campbell et al., “Superstaq: Deep Optimization of Quantum Programs,” 2023 IEEE International Conference on Quantum Computing and Engineering (QCE), Bellevue, WA, USA, 2023, pp. 1020-1032, doi: 10.1109/QCE57702.2023.00116. + + ## 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 + + ### collect\_all\_matching\_blocks + + + Collects all blocks that match a given filtering function filter\_fn. This iteratively finds the largest block that does not match filter\_fn, then the largest block that matches filter\_fn, and so on, until no more uncollected nodes remain. Intuitively, finding larger blocks of non-matching nodes helps to find larger blocks of matching nodes later on. The option `min_block_size` specifies the minimum number of gates in the block for the block to be collected. + + By default, blocks are collected in the direction from the inputs towards the outputs of the circuit. The option `collect_from_back` allows to change this direction, that is collect blocks from the outputs towards the inputs of the circuit. + + Returns the list of matching blocks only. + + + ### collect\_matching\_block + + + Iteratively collects the largest block of input nodes (that is, nodes with `_in_degree` equal to 0) that match a given filtering function. Examples of this include collecting blocks of swap gates, blocks of linear gates (CXs and SWAPs), blocks of Clifford gates, blocks of single-qubit gates, blocks of two-qubit gates, etc. Here ‘iteratively’ means that once a node is collected, the `_in_degree` of each of its immediate successor is decreased by 1, allowing more nodes to become input and to be eligible for collecting into the current block. Returns the block of collected nodes. + + + ### determine\_star\_blocks\_processing + + + Returns star blocks in dag and the processing order of nodes within these star blocks :param dag: a dag on which star blocks should be determined. :type dag: DAGCircuit or DAGDependency :param min\_block\_size: minimum number of two-qubit gates in a star block. :type min\_block\_size: int + + **Returns** + + a list of star blocks in the given dag Union\[List\[DAGOpNode], List\[DAGDepNode]]: a list of operations specifying processing order + + **Return type** + + List\[StarBlock] + + + ### 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.12)")) – 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.12)") *| 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.12)")\[[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)"), [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.12)") + + + ### run + + + Run a pass on the DAGCircuit. This is implemented by the pass developer. + + **Parameters** + + **dag** – the dag on which the pass is run. + + **Raises** + + [**NotImplementedError**](https://docs.python.org/3/library/exceptions.html#NotImplementedError "(in Python v3.12)") – when this is left unimplemented for a pass. + + + ### star\_preroute + + + Returns star blocks in dag and the processing order of nodes within these star blocks :param dag: a dag on which star prerouting should be performed. :type dag: DAGCircuit or DAGDependency :param blocks: a list of star blocks in the given dag. :type blocks: List\[StarBlock] :param processing\_order: a list of operations specifying :type processing\_order: Union\[List\[DAGOpNode], List\[DAGDepNode]] :param processing order: + + **Returns** + + a dag specifying the pre-routed circuit qubit\_mapping: the final qubit mapping after pre-routing + + **Return type** + + new\_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.StochasticSwap.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.StochasticSwap.mdx index caf38af59c5..c0a65fe5394 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.StochasticSwap.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.StochasticSwap.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.StochasticSwap # StochasticSwap - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Map a DAGCircuit onto a coupling\_map adding swap gates. @@ -56,7 +56,7 @@ python_api_name: qiskit.transpiler.passes.StochasticSwap ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -76,7 +76,7 @@ python_api_name: qiskit.transpiler.passes.StochasticSwap ### name - + Name of the pass. **Return type** @@ -86,7 +86,7 @@ python_api_name: qiskit.transpiler.passes.StochasticSwap ### run - + Run the StochasticSwap pass on dag. **Parameters** @@ -109,7 +109,7 @@ python_api_name: qiskit.transpiler.passes.StochasticSwap ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.TemplateOptimization.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.TemplateOptimization.mdx index d4e0270c2a1..e7d4473e89a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.TemplateOptimization.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.TemplateOptimization.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.TemplateOptimization # TemplateOptimization - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Class for the template optimization pass. @@ -42,7 +42,7 @@ python_api_name: qiskit.transpiler.passes.TemplateOptimization ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -62,7 +62,7 @@ python_api_name: qiskit.transpiler.passes.TemplateOptimization ### name - + Name of the pass. **Return type** @@ -72,7 +72,7 @@ python_api_name: qiskit.transpiler.passes.TemplateOptimization ### run - + **Parameters** **dag** ([*DAGCircuit*](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")) – DAG circuit. @@ -92,7 +92,7 @@ python_api_name: qiskit.transpiler.passes.TemplateOptimization ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.TimeUnitConversion.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.TimeUnitConversion.mdx index 19374c51a9f..642968cd580 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.TimeUnitConversion.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.TimeUnitConversion.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.TimeUnitConversion # TimeUnitConversion - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Choose a time unit to be used in the following time-aware passes, and make all circuit time units consistent with that. @@ -50,7 +50,7 @@ python_api_name: qiskit.transpiler.passes.TimeUnitConversion ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -70,7 +70,7 @@ python_api_name: qiskit.transpiler.passes.TimeUnitConversion ### name - + Name of the pass. **Return type** @@ -80,7 +80,7 @@ python_api_name: qiskit.transpiler.passes.TimeUnitConversion ### run - + Run the TimeUnitAnalysis pass on dag. **Parameters** @@ -102,7 +102,7 @@ python_api_name: qiskit.transpiler.passes.TimeUnitConversion ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.TranslateParameterizedGates.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.TranslateParameterizedGates.mdx index 99f27c29975..9cefc2c4f4b 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.TranslateParameterizedGates.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.TranslateParameterizedGates.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.TranslateParameterizedGates # TranslateParameterizedGates - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Translate parameterized gates to a supported basis set. @@ -92,7 +92,7 @@ python_api_name: qiskit.transpiler.passes.TranslateParameterizedGates ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -112,7 +112,7 @@ python_api_name: qiskit.transpiler.passes.TranslateParameterizedGates ### name - + Name of the pass. **Return type** @@ -122,7 +122,7 @@ python_api_name: qiskit.transpiler.passes.TranslateParameterizedGates ### run - + Run the transpiler pass. **Parameters** @@ -144,7 +144,7 @@ python_api_name: qiskit.transpiler.passes.TranslateParameterizedGates ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.TrivialLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.TrivialLayout.mdx index 5dec3e7fb7b..cd69f152cfb 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.TrivialLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.TrivialLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.TrivialLayout # TrivialLayout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Choose a Layout by assigning `n` circuit qubits to device qubits `0, .., n-1`. @@ -51,7 +51,7 @@ python_api_name: qiskit.transpiler.passes.TrivialLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -71,7 +71,7 @@ python_api_name: qiskit.transpiler.passes.TrivialLayout ### name - + Name of the pass. **Return type** @@ -81,7 +81,7 @@ python_api_name: qiskit.transpiler.passes.TrivialLayout ### run - + Run the TrivialLayout pass on dag. **Parameters** @@ -95,7 +95,7 @@ python_api_name: qiskit.transpiler.passes.TrivialLayout ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.UnitarySynthesis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.UnitarySynthesis.mdx index 91d7cfa5cbc..7cd03eacad8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.UnitarySynthesis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.UnitarySynthesis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.UnitarySynthesis # UnitarySynthesis - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Synthesize gates according to their basis gates. @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.UnitarySynthesis ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -77,7 +77,7 @@ python_api_name: qiskit.transpiler.passes.UnitarySynthesis ### name - + Name of the pass. **Return type** @@ -87,7 +87,7 @@ python_api_name: qiskit.transpiler.passes.UnitarySynthesis ### run - + Run the UnitarySynthesis pass on `dag`. **Parameters** @@ -105,7 +105,7 @@ python_api_name: qiskit.transpiler.passes.UnitarySynthesis ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Unroll3qOrMore.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Unroll3qOrMore.mdx index 6c6b4ab452f..b32f9ad379b 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Unroll3qOrMore.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Unroll3qOrMore.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Unroll3qOrMore # Unroll3qOrMore - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Recursively expands 3q+ gates until the circuit only contains 2q or 1q gates. @@ -42,7 +42,7 @@ python_api_name: qiskit.transpiler.passes.Unroll3qOrMore ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -62,7 +62,7 @@ python_api_name: qiskit.transpiler.passes.Unroll3qOrMore ### name - + Name of the pass. **Return type** @@ -72,7 +72,7 @@ python_api_name: qiskit.transpiler.passes.Unroll3qOrMore ### run - + Run the Unroll3qOrMore pass on dag. **Parameters** @@ -94,7 +94,7 @@ python_api_name: qiskit.transpiler.passes.Unroll3qOrMore ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollCustomDefinitions.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollCustomDefinitions.mdx index 51bb0230010..8806669562a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollCustomDefinitions.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollCustomDefinitions.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.UnrollCustomDefinitions # UnrollCustomDefinitions - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") Unrolls instructions with custom definitions. @@ -53,7 +53,7 @@ python_api_name: qiskit.transpiler.passes.UnrollCustomDefinitions ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -73,7 +73,7 @@ python_api_name: qiskit.transpiler.passes.UnrollCustomDefinitions ### name - + Name of the pass. **Return type** @@ -83,7 +83,7 @@ python_api_name: qiskit.transpiler.passes.UnrollCustomDefinitions ### run - + Run the UnrollCustomDefinitions pass on dag. **Parameters** @@ -106,7 +106,7 @@ python_api_name: qiskit.transpiler.passes.UnrollCustomDefinitions ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollForLoops.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollForLoops.mdx index 7b0fa4c798e..128ba93a901 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollForLoops.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.UnrollForLoops.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.UnrollForLoops # UnrollForLoops - + Bases: [`TransformationPass`](qiskit.transpiler.TransformationPass "qiskit.transpiler.basepasses.TransformationPass") `UnrollForLoops` transpilation pass unrolls for-loops when possible. @@ -45,7 +45,7 @@ python_api_name: qiskit.transpiler.passes.UnrollForLoops ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -65,7 +65,7 @@ python_api_name: qiskit.transpiler.passes.UnrollForLoops ### name - + Name of the pass. **Return type** @@ -75,7 +75,7 @@ python_api_name: qiskit.transpiler.passes.UnrollForLoops ### run - + Run the UnrollForLoops pass on `dag`. **Parameters** @@ -93,7 +93,7 @@ python_api_name: qiskit.transpiler.passes.UnrollForLoops ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2Layout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2Layout.mdx index f229dc1152a..65cf086f9b9 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2Layout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2Layout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.VF2Layout # VF2Layout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") A pass for choosing a Layout of a circuit onto a Coupling graph, as a subgraph isomorphism problem, solved by VF2++. @@ -71,7 +71,7 @@ python_api_name: qiskit.transpiler.passes.VF2Layout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -91,7 +91,7 @@ python_api_name: qiskit.transpiler.passes.VF2Layout ### name - + Name of the pass. **Return type** @@ -101,13 +101,13 @@ python_api_name: qiskit.transpiler.passes.VF2Layout ### run - + run the layout method ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2PostLayout.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2PostLayout.mdx index d2759605118..3480f6d855f 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2PostLayout.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.VF2PostLayout.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.VF2PostLayout # VF2PostLayout - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") A pass for improving an existing Layout after transpilation of a circuit onto a Coupling graph, as a subgraph isomorphism problem, solved by VF2++. @@ -74,7 +74,7 @@ python_api_name: qiskit.transpiler.passes.VF2PostLayout ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -94,7 +94,7 @@ python_api_name: qiskit.transpiler.passes.VF2PostLayout ### name - + Name of the pass. **Return type** @@ -104,13 +104,13 @@ python_api_name: qiskit.transpiler.passes.VF2PostLayout ### run - + run the layout method ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.ValidatePulseGates.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.ValidatePulseGates.mdx index f17666059dc..3da7459c159 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.ValidatePulseGates.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.ValidatePulseGates.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.ValidatePulseGates # ValidatePulseGates - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Check custom gate length. @@ -51,7 +51,7 @@ python_api_name: qiskit.transpiler.passes.ValidatePulseGates ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -71,7 +71,7 @@ python_api_name: qiskit.transpiler.passes.ValidatePulseGates ### name - + Name of the pass. **Return type** @@ -81,7 +81,7 @@ python_api_name: qiskit.transpiler.passes.ValidatePulseGates ### run - + Run the pulse gate validation attached to `dag`. **Parameters** @@ -103,7 +103,7 @@ python_api_name: qiskit.transpiler.passes.ValidatePulseGates ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.Width.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.Width.mdx index d0c2ec65564..cde11e90388 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.Width.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.Width.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.Width # Width - + Bases: [`AnalysisPass`](qiskit.transpiler.AnalysisPass "qiskit.transpiler.basepasses.AnalysisPass") Calculate the width of a DAG circuit. @@ -37,7 +37,7 @@ python_api_name: qiskit.transpiler.passes.Width ### execute - + Execute optimization task for input Qiskit IR. **Parameters** @@ -57,7 +57,7 @@ python_api_name: qiskit.transpiler.passes.Width ### name - + Name of the pass. **Return type** @@ -67,13 +67,13 @@ python_api_name: qiskit.transpiler.passes.Width ### run - + Run the Width pass on dag. ### update\_status - + Update workflow status. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin.mdx index f1e72a5033c..801d9c9b48d 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugi # AQCSynthesisPlugin - + Bases: [`UnitarySynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin") An AQC-based Qiskit unitary synthesis plugin. @@ -157,7 +157,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugi ### run - + Run synthesis for the given unitary matrix **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.ACGSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.ACGSynthesisPermutation.mdx index 98506f8276e..8d7c4f09c0a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.ACGSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.ACGSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.ACGSynt # 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.high_level_synthesis.ACGSynt ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.AGSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.AGSynthesisClifford.mdx index 0a7ded23cca..1c1d7845031 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.AGSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.AGSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.AGSynth # 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.high_level_synthesis.AGSynth ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BMSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BMSynthesisClifford.mdx index 60081f0bfc3..2f9469aab7e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BMSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BMSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.BMSynth # 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.high_level_synthesis.BMSynth ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BasicSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BasicSynthesisPermutation.mdx index ab448f15f41..7680921114e 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BasicSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.BasicSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.BasicSy # 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.high_level_synthesis.BasicSy ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisClifford.mdx index da6d52d7a24..a5d4e24fed1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.Default # 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.high_level_synthesis.Default ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisLinearFunction.mdx index db34f3c8079..6d01160d3d3 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.DefaultSynthesisLinearFunction.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.Default # 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.high_level_synthesis.Default ### run - + Run synthesis for the given LinearFunction. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.GreedySynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.GreedySynthesisClifford.mdx index 14ff9aecca9..0972b19084c 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.GreedySynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.GreedySynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.GreedyS # 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.high_level_synthesis.GreedyS ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisLinearFunction.mdx index 7b4abe98940..046a25a6e4a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisLinearFunction.mdx @@ -8,18 +8,28 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynt # 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. This plugin name is :`linear_function.kms` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.synthesis.high_level_synthesis.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.synthesis.high_level_synthesis.HighLevelSynthesis"). + The plugin supports the following plugin-specific options: + + * **use\_inverted: Indicates whether to run the algorithm on the inverse matrix** + + and to invert the synthesized circuit. In certain cases this provides a better decomposition than the direct approach. + + * **use\_transposed: Indicates whether to run the algorithm on the transposed matrix** + + and to invert the order of CX gates in the synthesized circuit. In certain cases this provides a better decomposition than the direct approach. + ## Methods ### run - + Run synthesis for the given LinearFunction. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisPermutation.mdx index 4b94ecacd26..b067e6c0047 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.KMSSynt # 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.high_level_synthesis.KMSSynt ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerLnnSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerLnnSynthesisClifford.mdx index d549903e336..86ce3c49bd1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerLnnSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerLnnSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerLn # 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.high_level_synthesis.LayerLn ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerSynthesisClifford.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerSynthesisClifford.mdx index 9bcb4126c1f..ec0f43a95a1 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerSynthesisClifford.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerSynthesisClifford.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.LayerSy # 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.high_level_synthesis.LayerSy ### run - + Run synthesis for the given Clifford. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.PMHSynthesisLinearFunction.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.PMHSynthesisLinearFunction.mdx index d5673c6db33..cb762e804fd 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.PMHSynthesisLinearFunction.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.PMHSynthesisLinearFunction.mdx @@ -8,18 +8,34 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.PMHSynt # 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. This plugin name is :`linear_function.pmh` which can be used as the key on an [`HLSConfig`](qiskit.transpiler.passes.HLSConfig "qiskit.transpiler.passes.synthesis.high_level_synthesis.HLSConfig") object to use this method with [`HighLevelSynthesis`](qiskit.transpiler.passes.HighLevelSynthesis "qiskit.transpiler.passes.synthesis.high_level_synthesis.HighLevelSynthesis"). + The plugin supports the following plugin-specific options: + + * section size: The size of each section used in the Patel–Markov–Hayes algorithm \[1]. + + * **use\_inverted: Indicates whether to run the algorithm on the inverse matrix** + + and to invert the synthesized circuit. In certain cases this provides a better decomposition than the direct approach. + + * **use\_transposed: Indicates whether to run the algorithm on the transposed matrix** + + and to invert the order of CX gates in the synthesized circuit. In certain cases this provides a better decomposition than the direct approach. + + **References** + + 1. Patel, Ketan N., Igor L. Markov, and John P. Hayes, *Optimal synthesis of linear reversible circuits*, Quantum Information & Computation 8.3 (2008): 282-294. [arXiv:quant-ph/0302002 \[quant-ph\]](https://arxiv.org/abs/quant-ph/0302002) + ## Methods ### run - + Run synthesis for the given LinearFunction. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.TokenSwapperSynthesisPermutation.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.TokenSwapperSynthesisPermutation.mdx index 5e82452860c..19d04778400 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.TokenSwapperSynthesisPermutation.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.high_level_synthesis.TokenSwapperSynthesisPermutation.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.high_level_synthesis.TokenSw # 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.high_level_synthesis.TokenSw ### run - + Run synthesis for the given Permutation. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin.mdx index f37b5e60d4f..7da472f807a 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlugin.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlu # HighLevelSynthesisPlugin - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Abstract high-level synthesis plugin class. @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlu ### run - + Run synthesis for the given Operation. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPluginManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPluginManager.mdx index f22aef492dc..250d1932212 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPluginManager.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPluginManager.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlu # HighLevelSynthesisPluginManager - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Class tracking the installed high-level-synthesis plugins. @@ -17,13 +17,13 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.HighLevelSynthesisPlu ### method - + Returns the plugin for `op_name` and `method_name`. ### method\_names - + Returns plugin methods for op\_name. diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin.mdx index 3f3e139dd4c..cf41e8d0d11 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugi # UnitarySynthesisPlugin - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") Abstract unitary synthesis plugin class @@ -176,7 +176,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugi ### run - + Run synthesis for the given unitary matrix **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPluginManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPluginManager.mdx index 0a05a720d80..12a7091f680 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPluginManager.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPluginManager.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugi # UnitarySynthesisPluginManager - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Unitary Synthesis plugin manager class diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.high_level_synthesis_plugin_names.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.high_level_synthesis_plugin_names.mdx index f3c14c03267..2c1895a4cea 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.high_level_synthesis_plugin_names.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.high_level_synthesis_plugin_names.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.high_level_synthesis_ # qiskit.transpiler.passes.synthesis.plugin.high\_level\_synthesis\_plugin\_names - + Return a list of plugin names installed for a given high level object name **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plugin_names.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plugin_names.mdx index 7dbd26b88d4..668e073fcad 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plugin_names.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plugin_names.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.plugin.unitary_synthesis_plu # qiskit.transpiler.passes.synthesis.plugin.unitary\_synthesis\_plugin\_names - + Return a list of installed unitary synthesis plugin names **Returns** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.SolovayKitaevSynthesis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.SolovayKitaevSynthesis.mdx index 85d792df484..e7c82684ce8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.SolovayKitaevSynthesis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.SolovayKitaevSynthesis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.Sol # SolovayKitaevSynthesis - + Bases: [`UnitarySynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin") A Solovay-Kitaev Qiskit unitary synthesis plugin. @@ -149,7 +149,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis.Sol ### run - + Run synthesis for the given unitary matrix **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.unitary_synthesis.DefaultUnitarySynthesis.mdx b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.unitary_synthesis.DefaultUnitarySynthesis.mdx index a5ae3fc712e..a24ba57abf8 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.unitary_synthesis.DefaultUnitarySynthesis.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.passes.synthesis.unitary_synthesis.DefaultUnitarySynthesis.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.unitary_synthesis.DefaultUni # DefaultUnitarySynthesis - + Bases: [`UnitarySynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin") The default unitary synthesis plugin. @@ -67,7 +67,7 @@ python_api_name: qiskit.transpiler.passes.synthesis.unitary_synthesis.DefaultUni ### run - + Run synthesis for the given unitary matrix **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePlugin.mdx b/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePlugin.mdx index 098faa1fcd0..c6e07737a85 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePlugin.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePlugin.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePl # PassManagerStagePlugin - + Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.12)") A `PassManagerStagePlugin` is a plugin interface object for using custom stages in [`transpile()`](compiler#qiskit.compiler.transpile "qiskit.compiler.transpile"). @@ -19,7 +19,7 @@ python_api_name: qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePl ### pass\_manager - + This method is designed to return a [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") for the stage this implements **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePluginManager.mdx b/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePluginManager.mdx index 0004e029412..4bdd45f12d0 100644 --- a/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePluginManager.mdx +++ b/docs/api/qiskit/dev/qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePluginManager.mdx @@ -8,7 +8,7 @@ python_api_name: qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePl # PassManagerStagePluginManager - + Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.12)") Manager class for preset pass manager stage plugins. @@ -17,7 +17,7 @@ python_api_name: qiskit.transpiler.preset_passmanagers.plugin.PassManagerStagePl ### get\_passmanager\_stage - + Get a stage **Return type** diff --git a/docs/api/qiskit/dev/qiskit.visualization.array_to_latex.mdx b/docs/api/qiskit/dev/qiskit.visualization.array_to_latex.mdx index 92da7230474..66fbf7086ff 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.array_to_latex.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.array_to_latex.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.array_to_latex # qiskit.visualization.array\_to\_latex - + Latex representation of a complex numpy array (with dimension 1 or 2) **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.circuit_drawer.mdx b/docs/api/qiskit/dev/qiskit.visualization.circuit_drawer.mdx index 4895dff95b9..6295dbb42aa 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.circuit_drawer.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.circuit_drawer.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.circuit_drawer # qiskit.visualization.circuit\_drawer - + Draw the quantum circuit. Use the output parameter to choose the drawing format: **text**: ASCII art TextDrawing that can be printed in the console. diff --git a/docs/api/qiskit/dev/qiskit.visualization.dag_drawer.mdx b/docs/api/qiskit/dev/qiskit.visualization.dag_drawer.mdx index b3ca4285198..d57394f7d31 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.dag_drawer.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.dag_drawer.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.dag_drawer # qiskit.visualization.dag\_drawer - + Plot the directed acyclic graph (dag) to represent operation dependencies in a quantum circuit. This function calls the [`graphviz_draw()`](https://www.rustworkx.org/apiref/rustworkx.visualization.graphviz_draw.html#rustworkx.visualization.graphviz_draw "(in rustworkx v0.14)") function from the `rustworkx` package to draw the DAG. diff --git a/docs/api/qiskit/dev/qiskit.visualization.pass_manager_drawer.mdx b/docs/api/qiskit/dev/qiskit.visualization.pass_manager_drawer.mdx index 8da6de737ed..02e293a41c7 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.pass_manager_drawer.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.pass_manager_drawer.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.pass_manager_drawer # qiskit.visualization.pass\_manager\_drawer - + Draws the pass manager. This function needs [pydot](https://github.com/pydot/pydot), which in turn needs [Graphviz](https://www.graphviz.org/) to be installed. 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 7571b09e3b9..c38e5392e9a 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_multivector.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_multivector.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_bloch_multivector # qiskit.visualization.plot\_bloch\_multivector - + Plot a Bloch sphere for each qubit. Each component $(x,y,z)$ of the Bloch sphere labeled as ‘qubit i’ represents the expected value of the corresponding Pauli operator acting only on that qubit, that is, the expected value of $I_{N-1} \otimes\dotsb\otimes I_{i+1}\otimes P_i \otimes I_{i-1}\otimes\dotsb\otimes I_0$, where $N$ is the number of qubits, $P\in \{X,Y,Z\}$ and $I$ is the identity operator. 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 4ec4bdd77f7..310e2d18a64 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_vector.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_bloch_vector.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_bloch_vector # qiskit.visualization.plot\_bloch\_vector - + Plot the Bloch sphere. Plot a Bloch sphere with the specified coordinates, that can be given in both cartesian and spherical systems. diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_circuit_layout.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_circuit_layout.mdx index c84df25200f..b9da79588ee 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_circuit_layout.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_circuit_layout.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_circuit_layout # qiskit.visualization.plot\_circuit\_layout - + Plot the layout of a circuit transpiled for a given target backend. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_coupling_map.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_coupling_map.mdx index 3fde90d0f91..1b4cd718c4f 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_coupling_map.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_coupling_map.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_coupling_map # qiskit.visualization.plot\_coupling\_map - + Plots an arbitrary coupling map of qubits (embedded in a plane). **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx index a3ade1b4500..c6e786ed320 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_distribution.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_distribution # qiskit.visualization.plot\_distribution - + Plot a distribution from input sampled data. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_error_map.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_error_map.mdx index d00b3b5155a..b23a66a377c 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_error_map.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_error_map.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_error_map # qiskit.visualization.plot\_error\_map - + Plots the error map of a given backend. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_gate_map.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_gate_map.mdx index 8ff29d50774..23f87164ca3 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_gate_map.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_gate_map.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_gate_map # qiskit.visualization.plot\_gate\_map - + Plots the gate map of a device. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx b/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx index 04cc8c0bf0e..2f77154a704 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_histogram.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_histogram # qiskit.visualization.plot\_histogram - + Plot a histogram of input counts data. **Parameters** 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 6d159878516..a9e42e636e3 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_city.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_city.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_state_city # qiskit.visualization.plot\_state\_city - + Plot the cityscape of quantum state. Plot two 3d bar graphs (two dimensional) of the real and imaginary part of the density matrix rho. 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 445c1c1e0a9..b306ef9f3f8 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_hinton.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_hinton.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_state_hinton # qiskit.visualization.plot\_state\_hinton - + Plot a hinton diagram for the density matrix of a quantum state. The hinton diagram represents the values of a matrix using squares, whose size indicate the magnitude of their corresponding value and their color, its sign. A white square means the value is positive and a black one means negative. 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 4001223bb7f..ba139f2aeb1 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_paulivec.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_paulivec.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_state_paulivec # qiskit.visualization.plot\_state\_paulivec - + Plot the Pauli-vector representation of a quantum state as bar graph. The Pauli-vector of a density matrix $\rho$ is defined by the expectation of each possible tensor product of single-qubit Pauli operators (including the identity), that is 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 1766ab8ecd6..23352ba517b 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.plot_state_qsphere.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.plot_state_qsphere.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.plot_state_qsphere # qiskit.visualization.plot\_state\_qsphere - + Plot the qsphere representation of a quantum state. Here, the size of the points is proportional to the probability of the corresponding term in the state and the color represents the phase. **Parameters** diff --git a/docs/api/qiskit/dev/qiskit.visualization.timeline_drawer.mdx b/docs/api/qiskit/dev/qiskit.visualization.timeline_drawer.mdx index f7e74ae8aae..d43b772af4f 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.timeline_drawer.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.timeline_drawer.mdx @@ -10,24 +10,32 @@ python_api_name: qiskit.visualization.timeline_drawer # qiskit.visualization.timeline\_drawer - + Generate visualization data for scheduled circuit programs. + + `qiskit.visualization.timeline.interface.draw()`’s argument `show_barriers` is pending deprecation as of qiskit 1.1.0. It will be marked deprecated in a future release, and then removed no earlier than 3 months after the release date. Instead, use the argument `plot_barriers`, which behaves identically. + + + + `qiskit.visualization.timeline.interface.draw()`’s argument `show_idle` is pending deprecation as of qiskit 1.1.0. It will be marked deprecated in a future release, and then removed no earlier than 3 months after the release date. Instead, use the argument `idle_wires`, which behaves identically. + + **Parameters** * **program** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")) – Program to visualize. This program should be a QuantumCircuit which is transpiled with a scheduling\_method, thus containing gate time information. * **style** ([*Dict*](https://docs.python.org/3/library/typing.html#typing.Dict "(in Python v3.12)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")*,* [*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)")*] | None*) – Stylesheet options. This can be dictionary or preset stylesheet classes. See `IQXStandard`, `IQXSimple`, and `IQXDebugging` for details of preset stylesheets. See also the stylesheet section for details of configuration keys. - * **time\_range** ([*Tuple*](https://docs.python.org/3/library/typing.html#typing.Tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Set horizontal axis limit. + * **time\_range** ([*Tuple*](https://docs.python.org/3/library/typing.html#typing.Tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – Set horizontal axis limit. - * **disable\_bits** ([*List*](https://docs.python.org/3/library/typing.html#typing.List "(in Python v3.12)")*\[Bits] | None*) – List of qubits of classical bits not shown in the output image. + * **disable\_bits** ([*List*](https://docs.python.org/3/library/typing.html#typing.List "(in Python v3.12)")*\[Bits]*) – List of qubits of classical bits not shown in the output image. * **show\_clbits** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – A control property to show classical bits. Set True to show classical bits. - * **show\_idle** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – A control property to show idle timeline. Set True to show timeline without gates. + * **idle\_wires** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – A control property to show idle timeline. Set True to show timeline without gates. - * **show\_barriers** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – A control property to show barrier instructions. Set True to show barrier instructions. + * **plot\_barriers** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – A control property to show barrier instructions. Set True to show barrier instructions. * **show\_delays** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – A control property to show delay instructions. Set True to show delay instructions. @@ -49,6 +57,10 @@ python_api_name: qiskit.visualization.timeline_drawer * **filename** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – If provided the output image is dumped into a file under the filename. + * **show\_idle** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – DEPRECATED. + + * **show\_barriers** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – DEPRECATED. + **Returns** Visualization output data. diff --git a/docs/api/qiskit/dev/qiskit.visualization.visualize_transition.mdx b/docs/api/qiskit/dev/qiskit.visualization.visualize_transition.mdx index feae2acbe9d..6cbd3753000 100644 --- a/docs/api/qiskit/dev/qiskit.visualization.visualize_transition.mdx +++ b/docs/api/qiskit/dev/qiskit.visualization.visualize_transition.mdx @@ -10,7 +10,7 @@ python_api_name: qiskit.visualization.visualize_transition # qiskit.visualization.visualize\_transition - + Creates animation showing transitions between states of a single qubit by applying quantum gates. **Parameters** diff --git a/docs/api/qiskit/dev/qpy.mdx b/docs/api/qiskit/dev/qpy.mdx index 5306486e3c1..aa22912fa96 100644 --- a/docs/api/qiskit/dev/qpy.mdx +++ b/docs/api/qiskit/dev/qpy.mdx @@ -57,7 +57,7 @@ and then loading that file will return a list with all the circuits ### load - + Load a QPY binary file This function is used to load a serialized QPY Qiskit program file and create [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") objects or [`ScheduleBlock`](qiskit.pulse.ScheduleBlock "qiskit.pulse.schedule.ScheduleBlock") objects from its contents. For example: @@ -102,7 +102,7 @@ and then loading that file will return a list with all the circuits ### dump - + Write QPY binary data to a file This function is used to save a circuit to a file for later use or transfer between machines. The QPY format is backwards compatible and can be loaded with future versions of Qiskit. @@ -166,12 +166,26 @@ These functions will raise a custom subclass of [`QiskitError`](exceptions#qiski ### QpyError - + Errors raised by the qpy module. Set the error message. +When a lower-than-maximum target QPY version is set for serialization, but the object to be serialized contains features that cannot be represented in that format, a subclass of [`QpyError`](#qiskit.qpy.QpyError "qiskit.qpy.QpyError") is raised: + +### UnsupportedFeatureForVersion + + + QPY error raised when the target dump version is too low for a feature that is present in the object to be serialized. + + **Parameters** + + * **feature** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – a description of the problematic feature. + * **required** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – the minimum version of QPY that would be required to represent this feature. + * **target** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – the version of QPY that is being used in the serialization. + + ### qiskit.qpy.QPY\_VERSION @@ -202,10 +216,14 @@ If a feature being loaded is deprecated in the corresponding qiskit release, QPY ### QPYLoadingDeprecatedFeatureWarning - + Visible deprecation warning for QPY loading functions without a stable point in the call stack. +#### QPY format version history + +If you’re planning to load a QPY file between different Qiskit versions knowing which versions were available in a given release are useful. As the QPY is backwards compatible but not forwards compatible you need to ensure a given QPY format version was released in the release you’re calling [`load()`](#qiskit.qpy.load "qiskit.qpy.load") with. The following table lists the QPY versions that were supported in every Qiskit (and qiskit-terra prior to Qiskit 1.0.0) release going back to the introduction of QPY in qiskit-terra 0.18.0. + ## QPY Format @@ -241,10 +259,84 @@ All values use network byte order [\[1\]](#f1) (big endian) for cross platform c The file header is immediately followed by the circuit payloads. Each individual circuit is composed of the following parts: -`HEADER | METADATA | REGISTERS | CUSTOM_DEFINITIONS | INSTRUCTIONS` +`HEADER | METADATA | REGISTERS | STANDALONE_VARS | CUSTOM_DEFINITIONS | INSTRUCTIONS` + +The `STANDALONE_VARS` are new in QPY version 12; before that, there was no data between `REGISTERS` and `CUSTOM_DEFINITIONS`. There is a circuit payload for each circuit (where the total number is dictated by `num_circuits` in the file header). There is no padding between the circuits in the data. + + +### Version 12 + +Version 12 adds support for: + +* circuits containing memory-owning [`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") variables. + +#### Changes to HEADER + +The HEADER struct for an individual circuit has added three `uint32_t` counts of the input, captured and locally declared variables in the circuit. The new form looks like: + +```python +struct { + uint16_t name_size; + char global_phase_type; + uint16_t global_phase_size; + uint32_t num_qubits; + uint32_t num_clbits; + uint64_t metadata_size; + uint32_t num_registers; + uint64_t num_instructions; + uint32_t num_vars; +} HEADER_V12; +``` + +The `HEADER_V12` struct is followed immediately by the same name, global-phase, metadata and register information as the V2 version of the header. Immediately following the registers is `num_vars` instances of `EXPR_VAR_STANDALONE` that define the variables in this circuit. After that, the data continues with custom definitions and instructions as in prior versions of QPY. + + + +#### EXPR\_VAR\_DECLARATION + +An `EXPR_VAR_DECLARATION` defines an [`expr.Var`](circuit_classical#qiskit.circuit.classical.expr.Var "qiskit.circuit.classical.expr.Var") instance that is standalone; that is, it represents a self-owned memory location rather than wrapping a [`Clbit`](circuit#qiskit.circuit.Clbit "qiskit.circuit.Clbit") or [`ClassicalRegister`](circuit#qiskit.circuit.ClassicalRegister "qiskit.circuit.ClassicalRegister"). The payload is a C struct: + +```python +struct { + char uuid_bytes[16]; + char usage; + uint16_t name_size; +} +``` + +which is immediately followed by an `EXPR_TYPE` payload and then `name_size` bytes of UTF-8 encoding string data containing the name of the variable. + +The `char` usage type code takes the following values: + +| Type code | Meaning | +| --------- | ------------------------------------------- | +| `I` | An `input` variable to the circuit. | +| `C` | A `capture` variable to the circuit. | +| `L` | A locally declared variable to the circuit. | + + + +#### Changes to EXPR\_VAR + +The EXPR\_VAR variable has gained a new type code and payload, in addition to the pre-existing ones: + +| Python class | Type code | Payload | +| ------------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| `UUID` | `U` | One `uint32_t` index of the variable into the series of `EXPR_VAR_STANDALONE` variables that were written immediately after the circuit header. | + +Notably, this new type-code indexes into pre-defined variables from the circuit header, rather than redefining the variable again in each location it is used. + +#### Changes to EXPRESSION + +The EXPRESSION type code has a new possible entry, `i`, corresponding to [`expr.Index`](circuit_classical#qiskit.circuit.classical.expr.Index "qiskit.circuit.classical.expr.Index") nodes. + +| Qiskit class | Type code | Payload | Children | +| ------------------------------------------------------------------------------------------------------ | --------- | -------------------------------------------------------------------------------- | -------- | +| [`Index`](circuit_classical#qiskit.circuit.classical.expr.Index "qiskit.circuit.classical.expr.Index") | `i` | No additional payload. The children are the target and the index, in that order. | 2 | + ### Version 11 @@ -272,13 +364,16 @@ This is sufficient to store different types of modifiers required for serializin ### Version 10 -Version 10 adds support for symengine-native serialization for objects of type [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") as well as symbolic expressions in Pulse schedule blocks. Version 10 also adds support for new fields in the [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") class added in the Qiskit 0.45.0 release. +Version 10 adds support for: + +* symengine-native serialization for objects of type [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression") as well as symbolic expressions in Pulse schedule blocks. +* new fields in the [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") class added in the Qiskit 0.45.0 release. The symbolic\_encoding field is added to the file header, and a new encoding type char is introduced, mapped to each symbolic library as follows: `p` refers to sympy encoding and `e` refers to symengine encoding. - + -#### FILE\_HEADER +#### Changes to FILE\_HEADER The contents of FILE\_HEADER after V10 are defined as a C struct as: @@ -290,10 +385,10 @@ struct { uint8_t qiskit_patch_version; uint64_t num_circuits; char symbolic_encoding; -} +} FILE_HEADER_V10; ``` -#### LAYOUT +#### Changes to LAYOUT The `LAYOUT` struct is updated to have an additional `input_qubit_count` field. With version 10 the `LAYOUT` struct is now: @@ -407,8 +502,6 @@ A new type code `x` is added that defines an EXPRESSION parameter. Version 8 adds support for handling a [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") stored in the [`QuantumCircuit.layout`](qiskit.circuit.QuantumCircuit#layout "qiskit.circuit.QuantumCircuit.layout") attribute. In version 8 immediately following the calibrations block at the end of the circuit payload there is now the `LAYOUT` struct. This struct outlines the size of the three attributes of a [`TranspileLayout`](qiskit.transpiler.TranspileLayout "qiskit.transpiler.TranspileLayout") class. - - #### LAYOUT ```python @@ -918,7 +1011,6 @@ struct { uint64_t metadata_size; uint32_t num_registers; uint64_t num_instructions; - uint64_t num_custom_gates; } ``` @@ -928,7 +1020,7 @@ This is immediately followed by `name_size` bytes of utf8 data for the name of t ### Version 1 - + #### HEADER @@ -943,7 +1035,6 @@ struct { uint64_t metadata_size; uint32_t num_registers; uint64_t num_instructions; - uint64_t num_custom_gates; } ``` @@ -1090,7 +1181,7 @@ which is immediately followed by `name_size` utf8 bytes representing the paramet - + #### PARAMETER\_EXPR @@ -1135,11 +1226,11 @@ this matches the internal C representation of Python’s complex type. [\[3\]](# [https://tools.ietf.org/html/rfc1700](https://tools.ietf.org/html/rfc1700) -\[2] ([1](#id4),[2](#id6)) +\[2] ([1](#id3),[2](#id5)) [https://numpy.org/doc/stable/reference/generated/numpy.lib.format.html](https://numpy.org/doc/stable/reference/generated/numpy.lib.format.html) -\[[3](#id8)] +\[[3](#id7)] [https://docs.python.org/3/c-api/complex.html#c.Py\_complex](https://docs.python.org/3/c-api/complex.html#c.Py_complex) diff --git a/docs/api/qiskit/dev/quantum_info.mdx b/docs/api/qiskit/dev/quantum_info.mdx index a05aa7c7e15..0d280ba4270 100644 --- a/docs/api/qiskit/dev/quantum_info.mdx +++ b/docs/api/qiskit/dev/quantum_info.mdx @@ -58,7 +58,7 @@ python_api_name: qiskit.quantum_info ### average\_gate\_fidelity - + Return the average gate fidelity of a noisy quantum channel. The average gate fidelity $F_{\text{ave}}$ is given by @@ -98,7 +98,7 @@ $$ ### process\_fidelity - + Return the process fidelity of a noisy quantum channel. The process fidelity $F_{\text{pro}}(\mathcal{E}, \mathcal{F})$ between two quantum channels $\mathcal{E}, \mathcal{F}$ is given by @@ -145,7 +145,7 @@ $$ ### gate\_error - + Return the gate error of a noisy quantum channel. The gate error $E$ is given by the average gate infidelity @@ -180,7 +180,7 @@ $$ ### diamond\_norm - + Return the diamond norm of the input quantum channel object. This function computes the completely-bounded trace-norm (often referred to as the diamond-norm) of the input quantum channel object using the semidefinite-program from reference \[1]. @@ -218,7 +218,7 @@ $$ ### state\_fidelity - + Return the state fidelity between two quantum states. The state fidelity $F$ for density matrix input states $\rho_1, \rho_2$ is given by @@ -252,7 +252,7 @@ $$ ### purity - + Calculate the purity of a quantum state. The purity of a density matrix $\rho$ is @@ -281,7 +281,7 @@ $$ ### concurrence - + Calculate the concurrence of a quantum state. The concurrence of a bipartite [`Statevector`](qiskit.quantum_info.Statevector "qiskit.quantum_info.Statevector") $|\psi\rangle$ is given by @@ -321,7 +321,7 @@ $$ ### entropy - + Calculate the von-Neumann entropy of a quantum state. The entropy $S$ is given by @@ -350,7 +350,7 @@ $$ ### entanglement\_of\_formation - + Calculate the entanglement of formation of quantum state. The input quantum state must be either a bipartite state vector, or a 2-qubit density matrix. @@ -376,7 +376,7 @@ $$ ### mutual\_information - + Calculate the mutual information of a bipartite state. The mutual information $I$ is given by: @@ -414,7 +414,7 @@ $$ ### partial\_trace - + Return reduced density matrix by tracing out part of quantum state. If all subsystems are traced over this returns the [`trace()`](qiskit.quantum_info.DensityMatrix#trace "qiskit.quantum_info.DensityMatrix.trace") of the input state. @@ -439,7 +439,7 @@ $$ ### schmidt\_decomposition - + Return the Schmidt Decomposition of a pure quantum state. For an arbitrary bipartite state: @@ -487,7 +487,7 @@ $$ ### shannon\_entropy - + Compute the Shannon entropy of a probability vector. The shannon entropy of a probability vector $\vec{p} = [p_0, ..., p_{n-1}]$ is defined as @@ -514,7 +514,7 @@ $$ ### commutator - + Compute commutator of a and b. $$ @@ -537,7 +537,7 @@ $$ ### anti\_commutator - + Compute anti-commutator of a and b. $$ @@ -560,7 +560,7 @@ $$ ### double\_commutator - + Compute symmetric double commutator of a, b and c. See also Equation (13.6.18) in \[1]. @@ -607,7 +607,7 @@ $$ ### random\_statevector - + Generator a random Statevector. The statevector is sampled from the uniform distribution. This is the measure induced by the Haar measure on unitary matrices. @@ -632,7 +632,7 @@ $$ ### random\_density\_matrix - + Generator a random DensityMatrix. **Parameters** @@ -657,7 +657,7 @@ $$ ### random\_unitary - + Return a random unitary Operator. The operator is sampled from the unitary Haar measure. @@ -678,7 +678,7 @@ $$ ### random\_hermitian - + Return a random hermitian Operator. The operator is sampled from Gaussian Unitary Ensemble. @@ -700,7 +700,7 @@ $$ ### random\_pauli - + Return a random Pauli. **Parameters** @@ -720,7 +720,7 @@ $$ ### random\_clifford - + Return a random Clifford operator. The Clifford is sampled using the method of Reference \[1]. @@ -745,7 +745,7 @@ $$ ### random\_quantum\_channel - + Return a random CPTP quantum channel. This constructs the Stinespring operator for the quantum channel by sampling a random isometry from the unitary Haar measure. @@ -772,7 +772,7 @@ $$ ### random\_cnotdihedral - + Return a random CNOTDihedral element. **Parameters** @@ -791,7 +791,7 @@ $$ ### random\_pauli\_list - + Return a random PauliList. **Parameters** @@ -814,7 +814,7 @@ $$ ### hellinger\_distance - + Computes the Hellinger distance between two counts distributions. **Parameters** @@ -837,7 +837,7 @@ $$ ### hellinger\_fidelity - + Computes the Hellinger fidelity between two counts distributions. The fidelity is defined as $\left(1-H^{2}\right)^{2}$ where H is the Hellinger distance. This value is bounded in the range \[0, 1]. diff --git a/docs/api/qiskit/dev/result.mdx b/docs/api/qiskit/dev/result.mdx index 662ccfae10a..1b7700e277d 100644 --- a/docs/api/qiskit/dev/result.mdx +++ b/docs/api/qiskit/dev/result.mdx @@ -26,7 +26,7 @@ python_api_name: qiskit.result ### marginal\_counts - + Marginalize counts from an experiment over some indices of interest. **Parameters** @@ -54,7 +54,7 @@ python_api_name: qiskit.result ### marginal\_distribution - + Marginalize counts from an experiment over some indices of interest. Unlike [`marginal_counts()`](#qiskit.result.marginal_counts "qiskit.result.marginal_counts") this function respects the order of the input `indices`. If the input `indices` list is specified then the order the bit indices are specified will be the output order of the bitstrings in the marginalized output. @@ -81,7 +81,7 @@ python_api_name: qiskit.result ### marginal\_memory - + Marginalize shot memory This function is multithreaded and will launch a thread pool with threads equal to the number of CPUs by default. You can tune the number of threads with the `RAYON_NUM_THREADS` environment variable. For example, setting `RAYON_NUM_THREADS=4` would limit the thread pool to 4 threads. @@ -119,7 +119,7 @@ python_api_name: qiskit.result ### sampled\_expectation\_value - + Computes expectation value from a sampled distribution Note that passing a raw dict requires bit-string keys. diff --git a/docs/api/qiskit/dev/scheduler.mdx b/docs/api/qiskit/dev/scheduler.mdx index ae2fbb95409..752779f3cf9 100644 --- a/docs/api/qiskit/dev/scheduler.mdx +++ b/docs/api/qiskit/dev/scheduler.mdx @@ -20,7 +20,7 @@ python_api_name: qiskit.scheduler A circuit scheduler compiles a circuit program to a pulse program. - + Configuration for pulse scheduling. Container for information needed to schedule a QuantumCircuit into a pulse Schedule. @@ -34,7 +34,7 @@ A circuit scheduler compiles a circuit program to a pulse program. ### schedule\_circuit - + Basic scheduling pass from a circuit to a pulse Schedule, using the backend. If no method is specified, then a basic, as late as possible scheduling pass is performed, i.e. pulses are scheduled to occur as late as possible. Supported methods: @@ -68,7 +68,7 @@ Pulse scheduling methods. ### as\_soon\_as\_possible - + Return the pulse Schedule which implements the input circuit using an “as soon as possible” (asap) scheduling policy. Circuit instructions are first each mapped to equivalent pulse Schedules according to the command definition given by the schedule\_config. Then, this circuit instruction-equivalent Schedule is appended at the earliest time at which all qubits involved in the instruction are available. @@ -90,7 +90,7 @@ Pulse scheduling methods. ### as\_late\_as\_possible - + Return the pulse Schedule which implements the input circuit using an “as late as possible” (alap) scheduling policy. Circuit instructions are first each mapped to equivalent pulse Schedules according to the command definition given by the schedule\_config. Then, this circuit instruction-equivalent Schedule is appended at the latest time that it can be without allowing unnecessary time between instructions or allowing instructions with common qubits to overlap. diff --git a/docs/api/qiskit/dev/synthesis.mdx b/docs/api/qiskit/dev/synthesis.mdx index 731d2a71b01..51312c4ad5f 100644 --- a/docs/api/qiskit/dev/synthesis.mdx +++ b/docs/api/qiskit/dev/synthesis.mdx @@ -35,7 +35,7 @@ python_api_name: qiskit.synthesis ### synth\_cnot\_count\_full\_pmh - + Synthesize linear reversible circuits for all-to-all architecture using Patel, Markov and Hayes method. This function is an implementation of the Patel, Markov and Hayes algorithm from \[1] for optimal synthesis of linear reversible circuits for all-to-all architecture, as specified by an $n \times n$ matrix. @@ -43,7 +43,7 @@ python_api_name: qiskit.synthesis **Parameters** * **state** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[*[*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")*]] | np.ndarray\[*[*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")*]*) – $n \times n$ boolean invertible matrix, describing the state of the input circuit - * **section\_size** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – The size of each section, used in the Patel–Markov–Hayes algorithm \[1]. `section_size` must be a factor of the number of qubits. + * **section\_size** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – The size of each section in the Patel–Markov–Hayes algorithm \[1]. **Returns** @@ -64,7 +64,7 @@ python_api_name: qiskit.synthesis ### synth\_cnot\_depth\_line\_kms - + Synthesize linear reversible circuit for linear nearest-neighbor architectures using Kutin, Moulton, Smithline method. Synthesis algorithm for linear reversible circuits from \[1], section 7. This algorithm synthesizes any linear reversible circuit of $n$ qubits over a linear nearest-neighbor architecture using CX gates with depth at most $5n$. @@ -94,7 +94,7 @@ python_api_name: qiskit.synthesis ### synth\_cz\_depth\_line\_mr - + Synthesis of a CZ circuit for linear nearest neighbour (LNN) connectivity, based on Maslov and Roetteler. Note that this method *reverts* the order of qubits in the circuit, and returns a circuit containing [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s and phase gates ([`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate"), [`SdgGate`](qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate") or [`ZGate`](qiskit.circuit.library.ZGate "qiskit.circuit.library.ZGate")). @@ -118,7 +118,7 @@ python_api_name: qiskit.synthesis ### synth\_cx\_cz\_depth\_line\_my - + Joint synthesis of a -CZ-CX- circuit for linear nearest neighbour (LNN) connectivity, with 2-qubit depth at most 5n, based on Maslov and Yang. This method computes the CZ circuit inside the CX circuit via phase gate insertions. **Parameters** @@ -142,7 +142,7 @@ python_api_name: qiskit.synthesis ### synth\_cnot\_phase\_aam - + This function is an implementation of the GraySynth algorithm of Amy, Azimadeh and Mosca. GraySynth is a heuristic algorithm from \[1] for synthesizing small parity networks. It is inspired by Gray codes. Given a set of binary strings $S$ (called `cnots` bellow), the algorithm synthesizes a parity network for $S$ by repeatedly choosing an index $i$ to expand and then effectively recursing on the co-factors $S_0$ and $S_1$, consisting of the strings $y \in S$, with $y_i = 0$ or $1$ respectively. As a subset $S$ is recursively expanded, `cx` gates are applied so that a designated target bit contains the (partial) parity $\chi_y(x)$ where $y_i = 1$ if and only if $y'_i = 1$ for all $y' \in S$. If $S$ contains a single element $\{y'\}$, then $y = y'$, and the target bit contains the value $\chi_{y'}(x)$ as desired. @@ -195,7 +195,7 @@ python_api_name: qiskit.synthesis ### synth\_permutation\_depth\_lnn\_kms - + Synthesize a permutation circuit for a linear nearest-neighbor architecture using the Kutin, Moulton, Smithline method. This is the permutation synthesis algorithm from \[1], section 6. It synthesizes any permutation of n qubits over linear nearest-neighbor architecture using SWAP gates with depth at most $n$ and size at most $n(n-1)/2$ (where both depth and size are measured with respect to SWAPs). @@ -219,7 +219,7 @@ python_api_name: qiskit.synthesis ### synth\_permutation\_basic - + Synthesize a permutation circuit for a fully-connected architecture using sorting. More precisely, if the input permutation is a cycle of length `m`, then this creates a quantum circuit with `m-1` SWAPs (and of depth `m-1`); if the input permutation consists of several disjoint cycles, then each cycle is essentially treated independently. @@ -239,7 +239,7 @@ python_api_name: qiskit.synthesis ### synth\_permutation\_acg - + Synthesize a permutation circuit for a fully-connected architecture using the Alon, Chung, Graham method. This produces a quantum circuit of depth 2 (measured in the number of SWAPs). @@ -264,11 +264,35 @@ python_api_name: qiskit.synthesis 2. N. Alon, F. R. K. Chung, and R. L. Graham. *Routing Permutations on Graphs Via Matchings.*, [(Full paper)](https://www.cs.tau.ac.il/~nogaa/PDFS/r.pdf) +### synth\_permutation\_reverse\_lnn\_kms + + + Synthesize reverse permutation for linear nearest-neighbor architectures using Kutin, Moulton, Smithline method. + + Synthesis algorithm for reverse permutation from \[1], section 5. This algorithm synthesizes the reverse permutation on $n$ qubits over a linear nearest-neighbor architecture using CX gates with depth $2 * n + 2$. + + **Parameters** + + **num\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – The number of qubits. + + **Returns** + + The synthesized quantum circuit. + + **Return type** + + [*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit") + + **References** + + 1. Kutin, S., Moulton, D. P., Smithline, L., *Computation at a distance*, Chicago J. Theor. Comput. Sci., vol. 2007, (2007), [arXiv:quant-ph/0701194](https://arxiv.org/abs/quant-ph/0701194) + + ## Clifford Synthesis ### synth\_clifford\_full - + Decompose a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") operator into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). For $N \leq 3$ qubits this is based on optimal CX-cost decomposition from reference \[1]. For $N > 3$ qubits this is done using the general non-optimal greedy compilation routine from reference \[3], which typically yields better CX cost compared to the AG method in \[2]. @@ -295,7 +319,7 @@ python_api_name: qiskit.synthesis ### synth\_clifford\_ag - + Decompose a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") operator into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") based on Aaronson-Gottesman method \[1]. **Parameters** @@ -317,7 +341,7 @@ python_api_name: qiskit.synthesis ### synth\_clifford\_bm - + Optimal CX-cost decomposition of a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") operator on 2 qubits or 3 qubits into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") based on the Bravyi-Maslov method \[1]. **Parameters** @@ -343,7 +367,7 @@ python_api_name: qiskit.synthesis ### synth\_clifford\_greedy - + Decompose a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") operator into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") based on the greedy Clifford compiler that is described in Appendix A of Bravyi, Hu, Maslov and Shaydulin \[1]. This method typically yields better CX cost compared to the Aaronson-Gottesman method. @@ -373,7 +397,7 @@ python_api_name: qiskit.synthesis ### synth\_clifford\_layers - + Synthesis of a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") into layers, it provides a similar decomposition to the synthesis described in Lemma 8 of Bravyi and Maslov \[1]. For example, a 5-qubit Clifford circuit is decomposed into the following layers: @@ -418,7 +442,7 @@ python_api_name: qiskit.synthesis ### synth\_clifford\_depth\_lnn - + Synthesis of a [`Clifford`](qiskit.quantum_info.Clifford "qiskit.quantum_info.Clifford") into layers for linear-nearest neighbour connectivity. The depth of the synthesized n-qubit circuit is bounded by $7n+2$, which is not optimal. It should be replaced by a better algorithm that provides depth bounded by $7n-4$ \[3]. @@ -446,7 +470,7 @@ python_api_name: qiskit.synthesis ### synth\_cnotdihedral\_full - + Decompose a [`CNOTDihedral`](qiskit.quantum_info.CNOTDihedral "qiskit.quantum_info.CNOTDihedral") element into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). For $N \leq 2$ qubits this is based on optimal CX-cost decomposition from reference \[1]. For $N > 2$ qubits this is done using the general non-optimal compilation routine from reference \[2]. @@ -471,7 +495,7 @@ python_api_name: qiskit.synthesis ### synth\_cnotdihedral\_two\_qubits - + Decompose a [`CNOTDihedral`](qiskit.quantum_info.CNOTDihedral "qiskit.quantum_info.CNOTDihedral") element on a single qubit and two qubits into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). This decomposition has an optimal number of [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s. **Parameters** @@ -497,7 +521,7 @@ python_api_name: qiskit.synthesis ### synth\_cnotdihedral\_general - + Decompose a [`CNOTDihedral`](qiskit.quantum_info.CNOTDihedral "qiskit.quantum_info.CNOTDihedral") element into a [`QuantumCircuit`](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit"). Decompose a general [`CNOTDihedral`](qiskit.quantum_info.CNOTDihedral "qiskit.quantum_info.CNOTDihedral") elements. The number of CX gates is not necessarily optimal. For a decomposition of a 1-qubit or 2-qubit element, call [`synth_cnotdihedral_two_qubits()`](#qiskit.synthesis.synth_cnotdihedral_two_qubits "qiskit.synthesis.synth_cnotdihedral_two_qubits"). @@ -527,7 +551,7 @@ python_api_name: qiskit.synthesis ### synth\_stabilizer\_layers - + Synthesis of a stabilizer state into layers. It provides a similar decomposition to the synthesis described in Lemma 8 of reference \[1], without the initial Hadamard-free sub-circuit which do not affect the stabilizer state. @@ -574,7 +598,7 @@ python_api_name: qiskit.synthesis ### synth\_stabilizer\_depth\_lnn - + Synthesis of an n-qubit stabilizer state for linear-nearest neighbour connectivity, in 2-qubit depth $2n+2$ and two distinct CX layers, using [`CXGate`](qiskit.circuit.library.CXGate "qiskit.circuit.library.CXGate")s and phase gates ([`SGate`](qiskit.circuit.library.SGate "qiskit.circuit.library.SGate"), [`SdgGate`](qiskit.circuit.library.SdgGate "qiskit.circuit.library.SdgGate") or [`ZGate`](qiskit.circuit.library.ZGate "qiskit.circuit.library.ZGate")). **Parameters** @@ -597,7 +621,7 @@ python_api_name: qiskit.synthesis ### synth\_circuit\_from\_stabilizers - + Synthesis of a circuit that generates a state stabilized by the stabilizers using Gaussian elimination with Clifford gates. If the stabilizers are underconstrained, and `allow_underconstrained` is `True`, the circuit will output one of the states stabilized by the stabilizers. Based on stim implementation. **Parameters** @@ -633,7 +657,7 @@ python_api_name: qiskit.synthesis ### generate\_basic\_approximations - + Generates a list of `GateSequence`s with the gates in `basis_gates`. **Parameters** @@ -659,7 +683,7 @@ python_api_name: qiskit.synthesis ### synth\_qft\_line - + Synthesis of a QFT circuit for a linear nearest neighbor connectivity. Based on Fig 2.b in Fowler et al. \[1]. Note that this method *reverts* the order of qubits in the circuit, compared to the original [`QFT`](qiskit.circuit.library.QFT "qiskit.circuit.library.QFT") code. Hence, the default value of the `do_swaps` parameter is `True` since it produces a circuit with fewer CX gates. @@ -689,7 +713,7 @@ 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, This decomposition is described in Shende et al. \[1]. diff --git a/docs/api/qiskit/dev/transpiler.mdx b/docs/api/qiskit/dev/transpiler.mdx index addf580646e..fcdbb7059fa 100644 --- a/docs/api/qiskit/dev/transpiler.mdx +++ b/docs/api/qiskit/dev/transpiler.mdx @@ -937,7 +937,7 @@ See [https://arxiv.org/abs/2102.01682](https://arxiv.org/abs/2102.01682) for mor ### TranspilerError - + Exceptions raised during transpilation. Set the error message. @@ -945,7 +945,7 @@ See [https://arxiv.org/abs/2102.01682](https://arxiv.org/abs/2102.01682) for mor ### TranspilerAccessError - + DEPRECATED: Exception of access error in the transpiler passes. Set the error message. @@ -953,7 +953,7 @@ See [https://arxiv.org/abs/2102.01682](https://arxiv.org/abs/2102.01682) for mor ### CouplingError - + Base class for errors raised by the coupling graph object. Set the error message. @@ -961,7 +961,7 @@ See [https://arxiv.org/abs/2102.01682](https://arxiv.org/abs/2102.01682) for mor ### LayoutError - + Errors raised by the layout object. Set the error message. @@ -969,7 +969,7 @@ See [https://arxiv.org/abs/2102.01682](https://arxiv.org/abs/2102.01682) for mor ### CircuitTooWideForTarget - + Error raised if the circuit is too wide for the target. Set the error message. @@ -977,7 +977,7 @@ See [https://arxiv.org/abs/2102.01682](https://arxiv.org/abs/2102.01682) for mor ### InvalidLayoutError - + Error raised when a user provided layout is invalid. Set the error message. diff --git a/docs/api/qiskit/dev/transpiler_passes.mdx b/docs/api/qiskit/dev/transpiler_passes.mdx index 40d417ca025..55f2ca89c5b 100644 --- a/docs/api/qiskit/dev/transpiler_passes.mdx +++ b/docs/api/qiskit/dev/transpiler_passes.mdx @@ -43,6 +43,7 @@ python_api_name: qiskit.transpiler.passes | [`StochasticSwap`](qiskit.transpiler.passes.StochasticSwap "qiskit.transpiler.passes.StochasticSwap")(\*args, \*\*kwargs) | Map a DAGCircuit onto a coupling\_map adding swap gates. | | [`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 @@ -80,6 +81,7 @@ python_api_name: qiskit.transpiler.passes | [`EchoRZXWeylDecomposition`](qiskit.transpiler.passes.EchoRZXWeylDecomposition "qiskit.transpiler.passes.EchoRZXWeylDecomposition")(\*args, \*\*kwargs) | Rewrite two-qubit gates using the Weyl decomposition. | | [`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 | | [`NormalizeRXAngle`](qiskit.transpiler.passes.NormalizeRXAngle "qiskit.transpiler.passes.NormalizeRXAngle")(\*args, \*\*kwargs) | Normalize theta parameter of RXGate instruction. | | [`OptimizeAnnotated`](qiskit.transpiler.passes.OptimizeAnnotated "qiskit.transpiler.passes.OptimizeAnnotated")(\*args, \*\*kwargs) | Optimization pass on circuits with annotated operations. | @@ -94,7 +96,7 @@ python_api_name: qiskit.transpiler.passes ### rzx\_templates - + Convenience function to get the cost\_dict and templates for template matching. **Parameters** @@ -149,7 +151,7 @@ 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. | +| [`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. | | [`SolovayKitaev`](qiskit.transpiler.passes.SolovayKitaev "qiskit.transpiler.passes.SolovayKitaev")(\*args, \*\*kwargs) | Approximately decompose 1q gates to a discrete basis using the Solovay-Kitaev algorithm. | ## Post Layout (Post transpile qubit selection) diff --git a/docs/api/qiskit/dev/transpiler_plugins.mdx b/docs/api/qiskit/dev/transpiler_plugins.mdx index e94e9487cb2..2e6d9df068f 100644 --- a/docs/api/qiskit/dev/transpiler_plugins.mdx +++ b/docs/api/qiskit/dev/transpiler_plugins.mdx @@ -97,7 +97,7 @@ There isn’t a limit to the number of plugins a single package can include as l ### list\_stage\_plugins - + Get a list of installed plugins for a stage. **Parameters** @@ -119,7 +119,7 @@ There isn’t a limit to the number of plugins a single package can include as l ### passmanager\_stage\_plugins - + Return a dict with, for each stage name, the class type of the plugin. This function is useful for getting more information about a plugin: diff --git a/docs/api/qiskit/dev/transpiler_preset.mdx b/docs/api/qiskit/dev/transpiler_preset.mdx index 0d52869f017..0993d07eabb 100644 --- a/docs/api/qiskit/dev/transpiler_preset.mdx +++ b/docs/api/qiskit/dev/transpiler_preset.mdx @@ -26,7 +26,7 @@ This module contains functions for generating the preset pass managers for the t ### 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. A preset pass manager 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 @@ -56,7 +56,7 @@ This module contains functions for generating the preset pass managers for the t * **timing\_constraints** (*TimingConstraints*) – Hardware time alignment restrictions. - * **initial\_layout** ([*Layout*](qiskit.transpiler.Layout "qiskit.transpiler.Layout")) – Initial position of virtual qubits on physical qubits. + * **initial\_layout** ([*Layout*](qiskit.transpiler.Layout "qiskit.transpiler.Layout") *| List\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*]*) – Initial position of virtual qubits on physical qubits. * **layout\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – The `Pass` to use for choosing initial qubit placement. Valid choices are `'trivial'`, `'dense'`, and `'sabre'`, representing [`TrivialLayout`](qiskit.transpiler.passes.TrivialLayout "qiskit.transpiler.passes.TrivialLayout"), [`DenseLayout`](qiskit.transpiler.passes.DenseLayout "qiskit.transpiler.passes.DenseLayout") and [`SabreLayout`](qiskit.transpiler.passes.SabreLayout "qiskit.transpiler.passes.SabreLayout") respectively. This can also be the external plugin name to use for the `layout` stage of the output [`StagedPassManager`](qiskit.transpiler.StagedPassManager "qiskit.transpiler.StagedPassManager"). You can see a list of installed plugins by using [`list_stage_plugins()`](transpiler_plugins#qiskit.transpiler.preset_passmanagers.plugin.list_stage_plugins "qiskit.transpiler.preset_passmanagers.plugin.list_stage_plugins") with `"layout"` for the `stage_name` argument. @@ -97,7 +97,7 @@ This module contains functions for generating the preset pass managers for the t ### level\_0\_pass\_manager - + Level 0 pass manager: no explicit optimization other than mapping to backend. This pass manager applies the user-given initial layout. If none is given, a trivial layout consisting of mapping the i-th virtual qubit to the i-th physical qubit is used. Any unused physical qubit is allocated as ancilla space. @@ -123,7 +123,7 @@ This module contains functions for generating the preset pass managers for the t ### level\_1\_pass\_manager - + Level 1 pass manager: light optimization by simple adjacent gate collapsing. This pass manager applies the user-given initial layout. If none is given, and a trivial layout (i-th virtual -> i-th physical) makes the circuit fit the coupling map, that is used. Otherwise, the circuit is mapped to the most densely connected coupling subgraph, and swaps are inserted to map. Any unused physical qubit is allocated as ancilla space. The pass manager then unrolls the circuit to the desired basis, and transforms the circuit to match the coupling map. Finally, optimizations in the form of adjacent gate collapse and redundant reset removal are performed. @@ -147,7 +147,7 @@ This module contains functions for generating the preset pass managers for the t ### level\_2\_pass\_manager - + Level 2 pass manager: medium optimization by initial layout selection and gate cancellation using commutativity rules. This pass manager applies the user-given initial layout. If none is given, a search for a perfect layout (i.e. one that satisfies all 2-qubit interactions) is conducted. If no such layout is found, qubits are laid out on the most densely connected subset which also exhibits the best gate fidelities. @@ -173,7 +173,7 @@ This module contains functions for generating the preset pass managers for the t ### level\_3\_pass\_manager - + Level 3 pass manager: heavy optimization by noise adaptive qubit mapping and gate cancellation using commutativity rules and unitary synthesis. This pass manager applies the user-given initial layout. If none is given, a search for a perfect layout (i.e. one that satisfies all 2-qubit interactions) is conducted. If no such layout is found, and device calibration information is available, the circuit is mapped to the qubits with best readouts and to CX gates with highest fidelity. @@ -203,7 +203,7 @@ This module contains functions for generating the preset pass managers for the t ### generate\_control\_flow\_options\_check - + Generate a pass manager that, when run on a DAG that contains control flow, fails with an error message explaining the invalid options, and what could be used instead. **Returns** @@ -217,13 +217,13 @@ This module contains functions for generating the preset pass managers for the t ### generate\_error\_on\_control\_flow - + Get a pass manager that always raises an error if control flow is present in a given circuit. ### generate\_unroll\_3q - + Generate an unroll >3q [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") **Parameters** @@ -246,7 +246,7 @@ This module contains functions for generating the preset pass managers for the t ### generate\_embed\_passmanager - + Generate a layout embedding [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") This is used to generate a [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") object that can be used to expand and apply an initial layout to a circuit @@ -268,7 +268,7 @@ This module contains functions for generating the preset pass managers for the t ### generate\_routing\_passmanager - + Generate a routing [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") **Parameters** @@ -294,7 +294,7 @@ This module contains functions for generating the preset pass managers for the t ### generate\_pre\_op\_passmanager - + Generate a pre-optimization loop [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") This pass manager will check to ensure that directionality from the coupling map is respected @@ -316,7 +316,7 @@ This module contains functions for generating the preset pass managers for the t ### generate\_translation\_passmanager - + Generate a basis translation [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") **Parameters** @@ -346,7 +346,7 @@ This module contains functions for generating the preset pass managers for the t ### generate\_scheduling - + Generate a post optimization scheduling [`PassManager`](qiskit.transpiler.PassManager "qiskit.transpiler.PassManager") **Parameters** diff --git a/docs/api/qiskit/dev/utils.mdx b/docs/api/qiskit/dev/utils.mdx index 4fd49881a6d..c6c51aa5e4f 100644 --- a/docs/api/qiskit/dev/utils.mdx +++ b/docs/api/qiskit/dev/utils.mdx @@ -22,7 +22,7 @@ python_api_name: qiskit.utils ### add\_deprecation\_to\_docstring - + Dynamically insert the deprecation message into `func`’s docstring. **Parameters** @@ -35,7 +35,7 @@ python_api_name: qiskit.utils ### deprecate\_arg - + Decorator to indicate an argument has been deprecated in some way. This decorator may be used multiple times on the same function, once per deprecated argument. It should be placed beneath other decorators like `@staticmethod` and property decorators. @@ -63,7 +63,7 @@ python_api_name: qiskit.utils ### deprecate\_arguments - + Deprecated. Instead, use @deprecate\_arg. **Parameters** @@ -83,7 +83,7 @@ python_api_name: qiskit.utils ### deprecate\_func - + Decorator to indicate a function has been deprecated. It should be placed beneath other decorators like @staticmethod and property decorators. @@ -110,7 +110,7 @@ python_api_name: qiskit.utils ### deprecate\_function - + Deprecated. Instead, use @deprecate\_func. **Parameters** @@ -133,7 +133,7 @@ python_api_name: qiskit.utils ### apply\_prefix - + Given a SI unit prefix and value, apply the prefix to convert to standard SI unit. **Parameters** @@ -164,7 +164,7 @@ python_api_name: qiskit.utils ### detach\_prefix - + Given a SI unit value, find the most suitable prefix to scale the value. For example, the `value = 1.3e8` will be converted into a tuple of `(130.0, "M")`, which represents a scaled value and auxiliary unit that may be used to display the value. In above example, that value might be displayed as `130 MHz` (unit is arbitrary here). @@ -208,7 +208,7 @@ python_api_name: qiskit.utils ### wrap\_method - + Wrap the functionality the instance- or class method `cls.name` with additional behaviour `before` and `after`. This mutates `cls`, replacing the attribute `name` with the new functionality. This is useful when creating class decorators. The method is allowed to be defined on any parent class instead. @@ -231,7 +231,7 @@ python_api_name: qiskit.utils ### local\_hardware\_info - + Basic hardware information about the local machine. Gives actual number of CPU’s in the machine, even when hyperthreading is turned on. CPU count defaults to 1 when true count can’t be determined. @@ -247,7 +247,7 @@ python_api_name: qiskit.utils ### is\_main\_process - + Checks whether the current process is the main one @@ -255,7 +255,7 @@ A helper function for calling a custom function with python [`ProcessPoolExecuto ### parallel\_map - + Parallel execution of a mapping of values to the function task. This is functionally equivalent to: ```python @@ -363,7 +363,7 @@ Each of the lazy checkers is an instance of [`LazyDependencyManager`](#qiskit.ut from qiskit.utils import LazyImportTester ``` - + A mananger for some optional features that are expensive to import, or to verify the existence of. These objects can be used as Booleans, such as `if x`, and will evaluate `True` if the dependency they test for is available, and `False` if not. The presence of the dependency will only be tested when the Boolean is evaluated, so it can be used as a runtime test in functions and methods without requiring an import-time test. @@ -403,7 +403,7 @@ from qiskit.utils import LazyImportTester ### \_is\_available - + Subclasses of [`LazyDependencyManager`](#qiskit.utils.LazyDependencyManager "qiskit.utils.LazyDependencyManager") should override this method to implement the actual test of availability. This method should return a Boolean, where `True` indicates that the dependency was available. This method will only ever be called once. **Return type** @@ -419,7 +419,7 @@ from qiskit.utils import LazyImportTester ### require\_in\_call - + Create a decorator for callables that requires that the dependency is available when the decorated function or method is called. **Parameters** @@ -437,7 +437,7 @@ from qiskit.utils import LazyImportTester ### require\_in\_instance - + A class decorator that requires the dependency is available when the class is initialised. This decorator can be used even if the class does not define an `__init__` method. **Parameters** @@ -455,7 +455,7 @@ from qiskit.utils import LazyImportTester ### require\_now - + Eagerly attempt to import the dependencies in this object, and raise an exception if they cannot be imported. **Parameters** @@ -468,7 +468,7 @@ from qiskit.utils import LazyImportTester - + A lazy dependency tester for importable Python modules. Any required objects will only be imported at the point that this object is tested for its Boolean value. **Parameters** @@ -480,7 +480,7 @@ from qiskit.utils import LazyImportTester [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – if no modules are given. - + A lazy checker that a command-line tool is available. The command will only be run once, at the point that this object is checked for its Boolean value. **Parameters** diff --git a/docs/api/qiskit/dev/visualization.mdx b/docs/api/qiskit/dev/visualization.mdx index f31fa47969c..0c37fffd4f5 100644 --- a/docs/api/qiskit/dev/visualization.mdx +++ b/docs/api/qiskit/dev/visualization.mdx @@ -225,7 +225,7 @@ You can find code examples for each visualization functions on the individual fu ### VisualizationError - + For visualization specific errors. Set the error message. diff --git a/public/api/qiskit/dev/objects.inv b/public/api/qiskit/dev/objects.inv index d0e37b9708ab244246a141200a260345e28404ad..657e75c788dcea8dae66bae702ae1c4631bead94 100644 GIT binary patch delta 68098 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�zYAW3C6_+%H3Z9kn~kVY=DOi@3!VRWpu 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 LZ?gV>u!`v@YQ9tR delta 67570 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

ofZ1fnz{@B*crvT(f$_|;N2RjM4waW- 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 CNfSH( diff --git a/public/images/api/qiskit/dev/circuit-3.png b/public/images/api/qiskit/dev/circuit-3.png index 82cdf8b2896c0a9bd83742abb00f7997df91171e..a97f1e4fe3ea9c7d2595dfd8f636958effd92868 100644 GIT binary patch literal 7947 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%0D`)T3TEA_GsX*)*ZLC}fuO=d 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 JavAf`{{`E)bzcAg diff --git a/public/images/api/qiskit/dev/providers_fake_provider-1_02.png b/public/images/api/qiskit/dev/providers_fake_provider-1_02.png index f674e1c93417effe9cf0ff4dede4f0ecfa4afbfc..3b99d6f55d786935ddee2b7536e0f72f6fb9ed84 100644 GIT binary patch literal 11439 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 literal 10941 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 MRWvSFx%1cfX zS~95QEYf5e{(bzW=HjoJo2i>?XLa9FVaB*<cMsRP)hII-RE zt1&d3gS|D3UZm}zU;A4=)dIsZvUi`1*!O%b%*~T#@D4-0r4B=X-V!dihB1ow+M2q! zd|cbw5@V9^xbEcSWcB&+5iySxojl!mPUW|QB$Z?dg5nMKdto1^Ij>wv%+<-GH#0L6 za{YC8eWiLefrihJ4sA8`>5*4+l9+Q!l;v=#t;I}NvV98nz-MxK*>Ryi$D+5l*U63~ zewup}_s^djE)e^Qo4odzuj=@a+ylo}RP2d}X4r zEsk3=`bwS$7Ffx5tW2x5Wrqcc*w7_N7Ssg=J-B<>(cqyb22wzR0C=otc?A^G+}Y zc2}a@VaS{#p3ewBXr3&I5&iPz3wAdSb`^WF^05BS{<01SJ_Rv1`k(E`# zy>R;Y-Ve%&M52d9nBe^Ue5QV}d8T|Q4ZbQ&&}w>e&&+HaGuNcQHL*1FQP2#_Esc~mVSJB)


qz?Dj)$A7ri_=e&k=Bx!ylyg1eoMPUMoAf4 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

UGj_+}F6h)5`&8>c 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 literal 10716 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�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 RSRTT9XnD1}xI6zo{~vXsy88eC diff --git a/public/images/api/qiskit/dev/pulse-3.png b/public/images/api/qiskit/dev/pulse-3.png index cbb666b690f5066d1e22c843ecf144ed12ea2e17..d38efa6899f3c100093ff2b9561865719686c177 100644 GIT binary patch literal 59375 zcmeFac{r8b-#)ClJ4&-chN3wt(PS!>RK^TtOhQP?Jkx*%QzQ+B3YkgfaaRfvGKWwZ zwjopI`FF0Z?(}`0_jr!?cz^%BkK-=d_P(xlt@T--;XKdJx^K%!i7#HnyoipDZn4Di zBXV?fbC=>z{lfWp<%&zy9(>zxdi0FxX(Js|3r%BfI!R5_E0>H+FX^4-wpg?@P&hh%veN9oE{hh$#QKW=6*OLGXfH^cucN73W!Gj}() zieix|zYbeDIj@+s_O0|=Z*WcYmq|a~clCKp=AiN_UUgOO6Zd8CYvJ*p?7l2X%ljsP#U!I@v+4?~zKHOnylBu8Vrj4X|y4w3Yt4?QH5A3n*IcL}V zp6NxmQDu8YB>k!5J~>m z_WK7+Tc3{fQ3I=l0_;cicAR<1(WIMye~VYJ`?`bkbNvOa@M$puGZX zc0Pdm>eZ_~=0854R4u8FR?k%CrHsG2B=96A<@=p@_jJ$V+_tjNiWibBc0WICvL5fv z<-hv8Va$QZBN^;E6 zie?I5>|TC;{vV$!qg7aNL-#W~yj;h+DN}x0Nk$EqS%q!)HJvdxPm+yP+!1uxX%W-J z7w=8d0$ghY?FP^Gd`{3SW01%ZXSZ7^*fKQcW)PE_v-$K3*KfU+4B0ywJaV;GZd3f2 z(v{ZXD$22xHQl)RgqYVZgUTpRYJOhcLicT|DKAT6H7Ivu##}LbEPKCP5sPVj^ytyC z;sBw=5;^p|8Rtf=iuT!!_Rn*pOihltUH>VPxPXyu&u%`x#o7BT>ZoHQI~lSc!X!99 z4F4?Py^(9)S);v=bxC7fE?Yt0B$ifSaxj^)Hrs`9FIV&E7i#le-mINmYs*5V8QBW* z^LIxmMC$A@su%n*pxZ}nm?$ro#}FMR$M0rsA_n-LVQ$mU;YN>w?xDb{?Kfd%k%qNN zWOIGFoZMa>9#kE#OJ!CHIkC#Dvqpj4VLa~f9=+!&Df=oSm88i(x%57Gal>8%&TDB^ zq+Hd)%5ql;m6n#8_7(2kwriJcTwI)fY4B~us5AErRIRPkO3TWM#|CtCblL-Kx=I=* z2luYpp)7AvZxsq_UOkwmVLx*8#{9){ZKWZru$AX8W^NUk8j+5ZFv_8EqMmNw-(Mvx0vYO9k+4UD(YdaNvdDIe&8if6^eKIuq*s&3g zD?}48DhLcgv~t5*66mkz2{ptrnySY86}i6EaPHQTbR{M z3i;n?CF)nmrJHy5H%v|Lt;%$m7*KLscTmxLqoiEi`S))tf96uJ?qg*Zw7k-D=F+7o zEJ3gv%ii|TK>I~D9;qhO2<1e5__ngdD)q>ziEal@s>tMUE-RcYT?}LRb8Ls#0nqtmtmRu zTZ26GamB6Jbk>7E!b48_ItxnUDa-N8KKo3>jSBpYIRwe0D3GP~+Zqe=8$mX%B znAb};K&!8%@Xb}PpR6oQOrdbyH^&dE>-YBdruF8q4D=O?7*LD+namgii{Y6Mgv*D^ zS+|FWnwClKmGG*!?%1J?y^}T8RTf_?9EmryRqF;;_*>Mk%^1Xvl66_Kj%!P>VbdkJ z*JpKVGl%C08Z zbP;Ol<}nQ`_=<-5mMxr{U|1`_uUE=d_1PdcQ?aeBE%kcr)yACgQ;&A1Q3Gsv!d_tf zVLFA6w<;%GjG^9Jnbdr)KEsOqPX5KIwMY;o9j3+_Dl%<`Jik7J^Md>E;?nE+`sR&8 zaYsyg*LD4Qbab0vMg`2iR*=gc+8-Jk$|4n7X8HBng6q^iea(G*bt4|w#TQhszF)JtpZTT{Yp{!JEuNO1&7dmAUp7`T{_wC-j`>=b1d99%{msabiXSiU_w``ZiPYQJy znD=bHpsK9=nDc|@1=jt>T*Xv(Q~K<+Q}9$`lR{O|D!v_k+H0KSbc+L2PnV4ibm$)6 z&1TnMqB>OA5kG|hUG}p25@#UQByslf-8mlY?6zOxb)`3K+?aD*8gZbO;y{rNKEA9m zts{n>?O#D$sX1vE?38gdsVe~P4g#G+p|22UAVMLgC$bCddK^UF&ha9 z318z7I+>TaWLtJ;4k7Zn_BQ4QTF{HtrJ1=U8P>KO$kNJPBIecm{Vs37K#iXtYY=QU zr$R|%U8(&pi!N2ME%glD7L#(=ZfvmPOR9<4*VotL-Nza=IEm-lAnqP! z)=^0kDr3n_JoP{N7GCh!JJX54BkMRN`F0n@MmtCqDp zR8wRoMh6b+)**{*%EyZWDBKGUy?S!dh@!}iMlCWF8NQ+?Xs zZ#vNzIK?ozYV6~liRIiUHt*kmc50;9VUJc0!$eOu<0u?)sESc0|8T(M)f1FeFgotG z=PH814I(QX26KxijVKc@$ow3=yLvanhT_$JSH|rr^$t^Z13#+yF3ie)rCktV(Os`h zvCotW5L|0q`1Q>VF=6p&#rnZl`4r+O@rzWR82UU`#KJAokB$;Q3x%|xEX5t^ImYy{GnrMvhq{x&MDRsPx3>Gue zR%GLa{blVx#dXbF_wlt9?rkV{Ud#dmalIR{g@>mrBVZG+uD!<8IAtD>Z--yHEEZwB zqNzbx|JDH|)vHcjDUC}C{SPX62#;Qj>BB_95dHNlB0?VV=|*7c@7%s!g4$-F+hOXU zQg?dxx4b^9BJ(f9QwB@@Qj5c6gUYd$1alQ*)h9AEs+!yJzH}5S20}w$Ot8^}bz83t z)md~P&Xgb$tbXO`-#^9_H*3!Po2-04&lG<{koK;-EMjoxD)PQao1w0nG_yz;Ddupc zs^v?}@0+Xt{PT};mTjv2c(1tjg$rTE&G`|ksjmrEK_t&m> zx2K2{H(pLYs3g-gG*#KNF&xlNo$HS@}K2+K*97IN!@dUFKDVriL6r%r$kab)_w0%tny|I--wbnIv}$W`UAhJJfbW9`8`J9o z43gX{-r5QOFi*!=eW~snG;DjFNKN-ucN}wAiv5#tvE;d`77M?AFfv3x6V7*$v02K9 zzhxi1H;Jv56O12jLJY90G$ntu7`Rz}A@iuUzgUUWtWA**rKZSuJA{qvpQIL3fdF|0H@)Ml$8lf6?@R+jX zA{EW=7?{tFYDz^oP#O+QxPzZmi%7x-TAmoq_ZYDi78?5zj~tv)N}JO5;>m?I&Ksrt z9(J%&khyE&e~+gk&$>* zJRQTmjaEs#eub!^Lzy&eWsxf_ess;#HSkv$K?Icou`BxVtGKat4 z&HwP>A2w+Ti4Oza=2=q#a4#jd)-GIV@bTd;<(KEKnRnMmr$I`1bhG!Xl#uO+)udbv8tkkMMJ6#n zH=z1$uPu|@#}6N5k)YrA^NWJ%bvQAp%M?7=L2|`-bv|G+g^&2eC&q@VS_+>ipaR{Y zo^b|s`6GZJZC^DMY7_K=uo3kuqt1?YrFWZ73{-7fy08`LW+1kfw?ToB1b+7j(;35~ zmez`St3;S=GEPk}ZIcrMv=kv56riukbrzK9EB%|S><{6 zHi#w7J$3x}Co%$3;R-yFByI%tl*yrvi{%jtC&@qIy8AKbk=TsZW1Y!;sy0uN+oM=XaLZ3BwB_TY4Ia5c7{9-TodcPb#cOto z!T~X+dwwT5L+z=6k+%*l4WaPV?X}59SALAx3!_?l?yGJs0WjmnF*jyz-vU~QF>Nbl z-fw*2iYn&Gq{2ie=Mah*h37|Zf9*vrAceZE9OiTX{(Y{tq4!Egsm-f}20v?!0%w!Y zv^FFDNcPwK^UdY=;vs>kY zZ!Kcti9)IpfmlbiU4p_h>|9|BV+!lURhC?lgYo`#fyq}@Rv9^+KkpUnj<*zEkP zdDU5WcO6c?I^N_h?Fv7`^8PLptw<2I8(o7Gbn)6Tsv+y*?43*29k{@-X6Nh8vd?cW zTd_i`JW`3bIJ(YOIB*vV%pg=|$4;GcmBsE0GNBgb;K_?egtu#CeYtYLKPNi5UVnIE z^6LY0-La9rq?@`XaD`;_trd|~`*Z71MI1vp>h|#Anjip;IhjNC2CN56H&>+qNXbnZ ztTAu{*s#WF(W>2#`3-c&;SUP?0(6DNttQ5MGsmzOiqh=92l`j9m-o_)uXcquXGVnM z@5&mx+z13IukSGsC6>K)rrxrsW`ityzvmzm(7M!+B~)z4iWuof6@s9gS z#Qn{hUl0#-0JNFZWmEgsW;-wDJMmz<-sek6p3%z<QtdHQK%{2xfWA);5E7VHAj* zwSmkz)ecI1HP3$@PP!^+Vy7+wfGV(?3XH80v1a$>tP!0c*f;r9Nuq&LV|sTMy-IO4 zdGmO2;7C-|b}azG#~$t0W=O6zR0YP7gSW5@S`}G-b7FEu4#y01@FHNSUL*i5Bk2^| z5#u1lSLd>}3n#_t=z4t5^SPdUS+kl>)sacv@(`oQ_)7v**(jnqrE|bX3nggADWHzzP>(W zoT{qmOT*=tWi!lu&E=B)hOLL(?>QUaQaW#fx?1;dMyNTfM)**=BMh@%mB>L(Jht5$WP_x=a(f=O& z;nFukB+_0QairZ*G+_hzL{U-Y21XA>;H4EIL?Q1Y>$)tw4$@UIP3GzRO_O-68Iz?RtAx?|RCOf&9vYdf?49@H zbUhfdXUyQr%?Ae$MDcJkxnw_U+3~pGTgtdTxsK!bVMn@$D}nIn7PHNpJuC7gvS3Ul zCl-48aaJc?B|P%<(C`61=rYSB2%<;i^+95BXOU1G~RN%#r+( zBcj)B0h#%&J9fAkvXbi_;U~ijEeqcrQjphX`tMqh2QJh(4UiFx!3?9CYIq;zz<~u& zT5H4C)Q4Fh*R>`_y5FBiAzbySRA@mv=zqL=o=i7GwhYYjuP1-aMQI4V;j$#ZduYZE zS>zfYEqf)-fT@Wov@8Tb=C5nhHUQ>fo!}LjYof1bT>H_J_e&SfHU05<*EFv#>qhLV z%``$Y$QgnE_Z}5;vYpaQzfsWj0-eImPzMVEklm=c(u{b?#<-(4Um0PhQXmH(ut-yF@jMW?A z1^Lj9z+zpqE#w+YcM(Iz)-r$M#=n%jLY89XMO_ujSKBK7Jdeax=g*%nkEgoLG<;as zU3Cqv*eZiRR}mGybu~4LhpZ+xET&+~#*N1;`a4g~7}R}l@1SbljHiHrX4uouLzh(j zD!9o9MUO1w_{zIY#QdBm7ZQhSa~6Dfe_(p1){vP(eL!CTZVY zKTmn3`k+eWA^Sv*ht1d-mOVno>2)(!ff78OJ6Pd?zgeA-04i#vP@b^i4O#F{bwG3PJ5z6IKUCTY0f zL-*z=+!N$iE9A z^BQC^2$FdYV2r@1>_?I<5wBBN3jD!X&18J|>S8v*GrzbE8gB@4Z?(LG=K4gPL-z5t zoe>J@0>2$*gXN+y3Ga=1;3`RS4#Z@m1oN)*q`nSC;yo`H8>;R~_F`ZR_neoki$Jd1 z=Br^Z3vw9<`oYM2kF9X>Dp@t_XY80usv4r0p0kpV_xvMl|06Cp!MszM&|fH0ssQE# z^b1ASXMhX`^;R+=x=wn5kx+=&k#u7hQ3uKNs-0U^?w()ax#U`f49lxJ9Ax5d>DxBm zUXNjcCu>Zw=vF6iqE`X|t9aBBf|@@v-;Eh8wRZjk*blyzRt)E? z&<4W1O~QI=Vu)J;>;gD(H)FfhOr(51j~;~sC>->vx>#AQv*Jvm&h@Ge1!ZOC^nYWT z> zV7;KLyP)`_9LKrVrVrk}F?oHSk9-aer>v9;$arbSi4>;4GdX<#c<%fLX>yTU0&^G2 z>HwWSaP|95u!=lwLyAsw7A$FEwrDw%YTV2vfzn9E>1Q*K+B4aUC}0$Q$;Vb+Y%cIk zPMhmDXV&5SXHl(k!I-4Hf(al2_F)QP?(k~4anx<{$Y#M}pY{Sfan`UVW2BUcbsjPN zhN-OZrY4nD$kfgDJ2rgo6acGP{;G!lRaDd|!Y880#GG(O7LeWUc#A`H^HVtL zAkcNdDApY?J&tf*v4Gw7DUbpKr1o!)E;mBj%WqJ5YR-IyPe3(MO#PGD^OpYS*aXo^ zypLUfV4pt^O2CtU#ll5lgpl$g@d5lKp=qT>CKBc|ta*xxU~cYy)+L0b4-)sl?c?wJ z_=JGfJ_h=W;FHl?MIz?@ml${nRD~kbtPUSu4RyVAN@AMp>@5IR`E);i65AmDing=Q z9qv?C(#OIn`d*8F>B2tyt13*1SwMetsP{iYWR0FP!IR2yES0H=QJWcSK=4Cd;FJCB z-=w8QbV@*VmNawg};nGvbPn?j$vzQL|Xad_m z0Xm=pFnbJe7T$e2Fa_)Hw>R}q3^hcOa$L~zC7X3CXLV=lCWrp+1`YTnWS2@PqLB84 zz_P*s+O${224)R^r?(rd)@A0?aRsd;n>pGZ`FNL>GZ-uRXNTv3`;|(rGgs-c2SfTP zSi;-1=j$P})=!7PI zw#7z;BqXT)w9c%_(DN2BtO-6_{IN8?SSWH;fp0-$Z{FqPNSSAciQXnNGNu$|K!16E zTTQ|ih5h^0C7hA5t7{}2Paf*pA)#OY+)1bC;WOT>VO0Ps(!yuYFbWNOS`W2tkWlXH zVji)ZRE^D4pBRl$qS*Ibjjlwa5Ner_ z8WJZYB`Y993KM6uB6L&*99s;k7Xne~W>%4vLYd#u-&UrKP|@?nZ@&nP)0fI$qP}IE=G_&U~X5A;lr(0AWr{Z5H-qOPNP*5mo7%C#ij=B6<1|O?>_s@!c056+! z8)eUbZzz8$yJ4;KGiH8+h$+WecX;KFG}y*V?ltXv0avt*het{{R*8|pK~yDc^n{mu zjIC8>yndq2$MIxR$x;S7_^*gMtlFx29E?jPP{@H~%7oF_k_@*&;_>8ingp&|lVKIl)rP@WF5dg)DI`uvWx#BoA^r@wh2@)KKFkfjQ9W5) zz#pX_AMpW#T>}pL2tp~*Nx@4;+`qq4qI7(u4_KoG>{C)I^fbuK(@>54>Broeqm7ab%K#3LB*KgP1d)m9*Cd2vs$=`R zDM}bJfW2+n+PWRBvEm9r#}=;>w3OjDP~Re9t=oKp2u47j!duD!JnG6cx>bKRRnFd_ z>+AxD7W4E0IAlbypiQBt9$-fOEe7v?wpmQ3Q}L#ukJP?4@W$R;z&fQdSA}LCm~8bPlRyuEVpQu4 zgDM`0{E8UagyYL#M&IAx>1e&TfwKxww%F0{jmYk{*i8(q#yYLrZ+j%9;Qj*)9@I$D zE6-rgp*pg*yR{3p8dmX;FbO{^?^?S<+B}I%54jc*!@)mvWp(f%lanaTSn40A%ku zn&nL<rRe_Y7z95BpGkUJOvx~5e6D9?W*ba#ZnP=At ze;+f_*EpU4Wr(T=_`x0N*_^ReEXG~HYQY#EFdM!9YI2HckgsZ={}Rxks(>k=L%fFC z7SOQJIuL<8z9(VD?Il5>kj8Aqvm+>PHY?MCT8K!JA~YyjmnoUaci!bjY6cx6k_Bdg zOJT*rwNH5|rz(_GvJ|O2YVsi`6p)tZv zog{9w*?6qkbr`w_Pz@2YuQ`GTlRJI-M&}B!-(}#H67(y!j!f7i25nu#bL1`5c>}N} zRN5W!#gzt~H6GDq=!Xp(h)<>Z2R%$0Ui1lm>AM`b!3R z-F+^iYyrjc(^3#0u%5~sLgLmBCmJF1?Jy)aVAM#JuWoxa$xq663A=Dq5M^?!lIuxx z7qR{O_k)Rj3E|luvv$h;$D<)I@{p*H+qHFdKU_}UwrP{NkafR2L>B5chR-tgtB=gF zCuWoh*&S|%TP_-&vuF*4Qj9CTsq#lIT@rLG!q#b#bz6vUwfPFnnrQiRC(i4S1q>rd z`v3OkKg>JNITAA?^f^)B*>ywF5qaeH^0c9P8=rsx9v~i(F=;12vv~E7J)Vo&vI0si z#7<5UKatp$BYxf(O2OL`!QXqnXXaG|3z&Eb48>?(_K8!c${)rx0^8I|t-B0AcO;gQ zb$rW~zE$uZ2qgx!Nk-*~28?8bb=GI90L^ZVh>RgBE=U(QqVyxUxmVMbefRzSqksIk zv`YF^xkH03Uy8sRWay|cf4DjpludlMO(-)!7A9H$il^`yGmOBpRT2h~_! z<@@4wb%{EK=@IhbUN5A_C`VT`*bJ$?XWH_7Z-cGalf8zE*c>bhnSFLBNf}gTY?By; zq=5vOtvQ{FE`y!d8-YEBa-Z~lY_CDG->=4+d<3aksLG7+PyyrV`;rr9JM!~H?L_C% zIt%O=qNG5*W?ny?ucfj=qSbcKMce>DBSsvb#)|7aeI23JaRN3~+`jwDYUGqO0F%7K z&Fx=UOnJ@HRav9@@m=h@xr$BTmCG<@?~as)ZeQd=AckX1ko8qkUPv9J+7&|zfm!;E z^Q@kKe0SB`9;IpA#Z%;>W=aNu3c<%q#Ru3G{mxGbXuAc}6Y8l&b7%j7B4}Cb9+MUZ zQp^3q*Pb~|f4(eKGiL5!V^`M)=&^M*?5Kc z5Ge=-?Z)g6=+bUPx6+gh381rDx|uI3_ddZ6b~4mk^U3S>6pcWmFC3HxqnQf~OMrgx z`Ha;;(nAQu;u;z%L|5WSmK9L>z~hRU%Zke(XWbx5ZZM4)Bk6`L;1BMD=NPa~yjZf{ zDzjdd`uXiLyi+uRgTT#W6A<{V{Eg|5G7-tDGb8)6&!5lywtFBTGtn2ccP0^Qc~DIx^_YyM;|QAQR!2yXGnU19CFZW=sWHVvI)c+l9*v=s0m?YDbZ z{Dshg1G)df+sEJE@Xx%7W-T<-_+=_3gmu`04XTwZbm(8ui|!$Dz!EDq{l@i|Varxu z5&#H{zh^!p=G*#5?=F0sIc!p=I|%MSdiLzunJ-^Ru3g2#v?+aJNMn=vIojO25yJ!t6r1DI66-{#*)81s}bU=uwkY>6CS>d0D-z2%R4I zF9FgFRqEnwqPf+MuSSfk@-*3|81=is13_00szvxV--!OOmT4C>viHKDr#L)|G=iW& zZay&iVN>8mKogi#&fF@1E~pQoJ3eoXlD7gnNl^Ajf#s#kbBptXZbBWC*TL;c_TSRX zhbC%tQ1u)&${ctA4b!UKhV~`TkCL_!ch>#OciSU0lbj9d-Ne^n6#DJ#Q^PJW-58YE zYNew=Ze?xq?-#9VzT%lnE_h4bwsDK&Wy*y4Iw5O$cH5pqJ!jzJz$!<9aCdR7OEn24 zA^;G}E;kp8IWyeTTtjdI?#P46h~^a$YAOOO6e(N@cnZMJr%>vLLH1(}@xzT=0w{rK zZ-oqwer>vT!D0I@i`ect2cv}-WWIy|c)-NFc|-znIZ zS8$cOjU?isBCxi@IqUXa5%rQ!x>T(?v{@x73IcBSk@G=*@PjB5noRfoabC|Hp%GJ5 zRD4ixMO_Ec{fX|3KB<_&c@l3NzZKJOJ3-;iv1}3K2`JPl^VziMiq^q^YAl8Qqg_Y>4eBS~yp`wQD zyMb|OByK$w-KLS1L73QuOBcOF2$Y5X%|jRpjm(jjCsyvMfJV3_o(LE&a-QdfLcpG+ zv_xUb1vRPS69FT4%fga8kdB!a4GN(hvAzY(uYM&f`qrKNioT8}fc{=X;K^?@c!{Xs zRFW@SxrZa+B4Rx#nn+v3y~Zit{=IlZ^`)e9wKwW6pN7%#p6x8*;^RAg(4temn8gUl zj8ha34SHRFo$i@qM^&uG=UtGnDh+kjRm5qD6OlkomR&lox4+J;N)5v9LGG~KY4ACa zRo<$mee^lN;qiH<0Jp((mc&vfBLF;+w1IT$3_t;_qNZG)SCpSbn;p7ao1bXHM;?7` z4Zu~YrpqXrCrA{|x7_=505Vmrl}yvQ(v>*SoPl@$_ekJBn!|SXg?_#A@08aJ>Rh-8*rNUOvrOeZ zMlZVR(zbAG3#SW{=Sm44_HNVOh%in>nRiz2u&&$%HVu-^<%&)wan*+UCTg{}5_kFm z^KoMqD1~}QK0;ovQ|e?H`Ul_@&2rb-ZTRU&uGORaQFJFK8WT`jD8U~?eESr&m;T@n zG;KjY5|ZP_vJFrJki7EK(n2Ak9G=t(2qI$%Bhr}TMmkR*!r_(xB42{C$_!2-61~a< z+T&_Nf};Q^@jfmJVNN?>tA(iz*XPm819MolMeYdrh*Idbd?4AGGCDF#0O;OCAN$lN zF?3?AE_@QMQpJ*B+`LGl6evJNoYEy(y6Dvp>{m)_d7_vWkOH0Y7CmEJM zx8gJFvdshvw|U=XD1?{=Ov7rDB;-&X5HZAkpGRwxa;yhBItJ@A5f|1XC=y?{?tu9x zz(RdSWIE{lHtBFYgbeUGa!`FVz9^@ehJ!32(olt1b+z#DaMD1Lc;(w+r1>YYuYfSt zVM_VWzq=*aO%!By=!1Yp+Ac2@3g3%B3Wz`qECjhILCvuT2%kdGHsbW*Gl?KA@fY|; zevA1;CB)3VX%o?X`L_CR*+;}~_}QQah$BR9Y^=Lf@j=1vjtOB(fUWTz(#&V5lC0NT zdr}@;5Rt08Fix$PIAH$c;ru17vDa>NmAXFS8$cD_RwB+;32Y3g;7$67DkSiy^&@It znsMRj9Zy1zx3LawAVd=d`t5RB+eYq<8}-pl;uQ>1>nu@ZVLqBo50FMIH;73Aa(*8TrMiXE;80(TOe?@|_gUnd7WLJ<<1|FyQ~Kexb8;l|urWd23uwxV z))^WBE+=n_WTjsr&qo6T~L>3gO zL7B||_^}+ccX&Cft}wuksq)#TlPS6DZFa~XhE|6={NzG{C`vb^RN zrx*Lb0`Q!OREiat$SAo8=w}oSGR;F{1J$}6P|b?Bm&CguYDIticq((KD;;?_0l*h@ zQvy4zUFx2J-PgnRsfp8aK?#PO6y)2puSE>MaF}}AzQs^4eb~uBAWqOjw3RVSrb{m5 zC`v5AJZu273I!!Sbg_8ZcXtFHw1^=Y8BqFg{9)dA$*_r8&7(H5!r>lSuvuO1zJ`fBwp+}Br}@n^bF5l#I(IUN;jb7qzQE^L{K3od?5C=P^{f~m(zau+k#Q_ zb3(vSkySV4hWyL#!FILB#oaXJM^mBB8fQ(jWhr||gBe7l9pDa%%wm3FBq6-{=i$2L zk+kxgw!XZZC63H1!1BD`M#;xfDJdzoQAAWWY!Ln*@Cddlx_6J`+wY{Cpb|H zVzQe6O;9-@=GGq0EGb=b)X-%rhCfd;$jx;F^LPSMRyYqjPv-|5= zSId%=@K>oH5O8^BsSh$iAyVF_t|*ougO085_p-eX7UkdwE&Bj<48Eo-A0)ieWA@NE z&5(|KWvm=GYB;KGIjV*DM>C)6S7QF z?y60_-pPP2nmaS=FE}kUF#LHOQQ>{&;}2&_Pk_@Sk(ep{LnIi<5U%bVKk&OunMLaA z8t*vqzn4yJdBQM=N|IhD&kw{4(V-i+RcK`EK4purA=dSEyjc9l}>+a^+_$-m=i3&qq z8$9#L2q-<#Du!>rO`HG+1Y)wOQ20#~L!RcKr&A^3$%SJIjI|4JEI_l^QCt(uz*hq zBdL?uG}qL;(x#t*pm=Gnfn0N==$|J*O8t1R!LdJf)N}*lgUFNQ9gerwi;7Fyn48zN@a1^67d6c`Jv*G7gUO)(!SgE>k*_1dH7qzW<|E z791yFJNPL7!506HQ27tbw<>d~qn5Dld5kFB)|;D~cbU@T(K);+K!#A}wyCcoWHTQJ zJR0?MXBECuWU!jo{-pl_bD0riZH0v68MeY2F}s{KK}P6V_qpv=NIapf)({?q$h%BX zqzer9yA_QHm}YPIX`!z9Cf%%Me62C*16}C`L<{f2T8uLH`n*{EPihw7?;ECK<}6@z z8vik7MNv-D56O{y9EMKHY1RmEmmDY+o`}_0&uZSHk^tAtQEL1)ZEwl4jrA5q2G}U* z=F3uCusPZ`3H_6AB|skuWWFoBMo03kCBRYDFavwWN!cjibA3zNcLGFz%V z3zsh41<8*B4zcj@+AY#F40#qobLun4nyl)w89geK(fWXPFL^YTbLk;lA-R@I_Ep)$ zQxEsaLJlAgrf*R$lfuxG?$UbpQq$4$+wtmUS#~yc#wTBajx?^^g(DZdx>$A}$@O3d z(pUNUY9mqN0myLvqWeC7)n9{wKSAs$jYLmURESmfRPmDpes6=N*pywz z4vhDJrEP(dihQWKzip&phf-kpg>d6Lyk1vIhW0_7GuTxZiFgxc=i-hg0|+6pHLoQZ z)-khMAo#XL7Cz|p^=}s#|OL%3&LElKjfnxbz|d~V|26omXSRN>>$9y<|a#S3Dn&WHX8|Skd^2dCO+a=DD5Tokr-XFr$WpNP2GM`tDG95i4L+iNiI* zexecZ(xXyNkqyow91RaLxcen*kI+jWujB%?*{R&CY2 zqtul28y*do6J|bJ&mP`8_=8hotICUn6F%FY6$`7dv-Z92`Ia_NS=;|3K3+cln3>_{ zmxoS1;8|Sc`WdJQiuju!kCXLryq>4ycXnj4gWkWGMx&p=< zI5p_Bt}Io-i9Rh9Dpm0H<A@%}sDcTcImDs`xZp{4hXw`@8x#W9(^i`b&&T6%%Z{*(D$h9@= z_;s!iT`9vF^Wd8U2PY7&bz*31mg2gMW2Fol{>Y&f*FD&6e(WNxaOlucK>dnhj|WFz zgrg7YfOUTuTDC~(P-k4QW3{549@5D(M96f5QOLCD>aJaJk9QhATYhJvu-{}gui}?} znp*9v@v$=Vm3pYO0kVXWDgi~BS1@7gckRMJd7{zHsnnP&@+`SQ-L`UsY z>M8p#{e8%^uBRpUXh-1uh(HqQR-0rO0 z!K37=q7Yeek89nqRcttQ4}%z#w}1GbTZcoX0~Jwh@w7e`efWdX}#G z?j>t=*El;b{t+A`a?*RU*R_4G{xU%e?fu2`ghD}2K)7Vu=$46Ai);;Y9}a2B*vy>v zxY zt{wVu+C#5uuu%VVu+QU(On^?naJSEeMEhRZH~GVducIRVm`QF%mvV}jGeV3k^a;p) z(K{9lBW_3cuM9+XiRa%hLLN9jR|-spR|5RI1f^K+44VD9^dPhG%^F_#1PT}Z+KmuW z3k4ZvRljgK<}UBOvFak#!@TqJg9xWSoz?<3_AR|eA^ekpeWye;P#6Wc3L(XBxl7Pj z$AbHX=h}v6Lx*w{_4Ptw_uIE+e>n$8p7qIzTXMn2^Z0dN^irEYiZ~!q@ktu1&0A@B z4ZEYgD9hp^YJIDKSheJPFFsmIHgA>xU>0*(dupDL5;Pn2wvCJHtZNN9-w-*HBmL?0 zN}rl!-XVb>DS|uaJacSopioFJ_o1rsReaCkT{{}3g)8o?Dj-tm5F8BiN>D%{%+#sI zygej%P^frqlLRum+WQsG|qRW4C1UZ(i?&=Kt#bUad7Zh3w;)ZP!D30TXWPi zL8Pw#Nt6S0=lIhr=F$1)J0)%O%qWHX(6UI*Pr7%%%9^M98Y;PytI9=YxHhf==ssMk7^2#4W{RPw1+PPj#nSu-t%7uf{|8egpfXqs+u>d^LV8;O_f~NKN2qAv~CA904H)f)#K;JA(Ne&4SBR-b;m z1QI1Yl0`k507ws-E_9B3TYx0<6v}6dFC|s&KgslPG<nJ<~>7RA_q0r3=FpJ8RlM#oZ7HdGXk?nM}o%5zYD6 zB`_3%Hm~MU4Fh1e6~}i#vMmFc+2`@&2*MJfBN9<8Gr_Dw5zj>Qgg7xMuTPyo?=I~2 zVF-CHeoy#x-AQ9UiUuN}#zl! ze0r0IUTKg;MD7j?gLhiekv|)x2-Ni(ZhkqGM06OD&|##*17QLpBx{qHR5y@GP%Q#7 zTPnG?E*QW|{^jJ37f&wB!8-^T)o+)u9%=S9%U-;f9BP8+hG|r`mIRR|Y4x5ybij&2 za_WmFFYr|)0RSm~4C1wW*kEuNW@w<;3ZLUen$poBEwtv0DdrD=>xW`rdx-=*X0*2# zL1>_gOf;;OD)8Nr{&g%xmFI8JSs_{xpfe@0Kq2iCw^>(-Gy)sR`fa*do?9r!2*x@s zGZc8TRUroBHO{{P&3&DfZap6-dAg@h&tr+Cq*1b~bzxUUfVlcA~&12ilNUbibiN01?BD zW;H3__(-~BqG5d&eFRxwfBA=Fj!Vh5#DQ4Wd2u*o2FBKQy<0okMQSxp4|K&r2Vv-8 z<}2gW$MWJtM0gg0#trPa3i1PowQvG}b@DrCJKS@&yAdpUtcC+DRRhPBSbrO# z@}D1`GdfhzabG6mW=vGwajgJ9-nO^NR{iK&1n!Ashyc#yOqfGev>1O#^#3mC>|68S zD+^%^DrAh^brv`V>^}A&BN+Iop^=|=c}aMLUh4h3cR-sDqcrsjuI#kg+UT;!?&YYN zmEc(%*GBs5YZ48zD}5pJTOiKhoBa*#0TfY7Vh$YoyXO3VQ2Eu&`X5w&>d|N8b4-Qq zl?I7R?@&pT_YnU15^;fF=f^&{fiqs@ATzy|k88<6dqk+uCS>iLktISqOajtILOMe> zL7G^~0!Quk-d)aJp!dDMs=p;t+MxOgZ$7no`4l6P!qn7asb;pggPu!itfz z%(z&OuN*C|8wFNqf87qH6ybA;mTv~1`{}JCB_qveB2|aeueUHmM6WTMJjc?!TpC#W_2=PVQnoZRFIM*qrt`G?`JyO+ z+}1eTe@XW}x{?HC(rNc~D*dy7vnaL`hZ?{9yFaPZ6l^O*d6*uPBr=Ue9ao* zYdD)t>JJh})6gZU9sD=dpZos|dQW{fzlw37YNaW$+Dx~GOS1eWqoE_fE&8YC{=rFU z9iULAafy4CiaUMjve?_sRMff6RdVicXW(+YN1B zWR>K9zWr!y=3hwd`S*9vs?qlA5$NO`B_JbLOZ#$eW-B@A9o^Q~vSrhz+?nl{v+XGi z8=gA;E%OsdSKB1z=UF&|yx?HRQDFWC8XQ(d!9X{fyw06>B9mb7ppcDz~3{kN45#%kg-QsR$n92 zCVJ@T^uB}4>;24LU~~?AJM1(Qmj@SQ9@2@nrsO|DHx71kKFE(Xl_KQ6GM+?hhdY8H zygt*~!LCCjF;gB(ZiLjE&@03w~~u@#Z^Xw8{1?AL^iX#aJFKr=yopkmRlh}qzh zeUEB2{V+=xlh=`-q3z@PpWa^@g#syo-!kp50E!*=n8+y3}+ zTKnL!WAkUc0(Gr?)#W;HuYaBTFnyK-c$_y{Q4Zur95v*q3g9wmveEsw>u% z()pIWi;i~R+tWhm$wg$YiL>sO(wd&v->v`cqecGJf3`DmxT9CQJ>INc_~SLX3Mjf!zd<6aZiL3C{!r;KPtddo~=n%0sqNO zW^w8MxeMo!lBmB@#RzJ4Csqx#aT9ICZteV=tQzR^B{B{GB{)XT*!NXAWiECQtA}{h zGXkA*JO-#DiUS_g-Pwd9a5NW(<#u#|+-2fbgqX_2Ef(^WALf(c8*oBN!Eb(fSn(_! znt_gzHaRq&un8tX?L(#o4UkWqd?xs@sH-G5Z`>ftNHSg`ftL{-=&DmeEpuA2vfE+A zo*XQjW@ezga{JdS`z|C`KWrw;Lk`6V{qIzg0iE=>1haQG)fgXlMx!fvt2H?!g(;LA zQQVM~xq63kFccP`G)bp1lO1Imi0g}cOK~SH9a~q1er(v?eCMiv761Prg;eX$#6ibT z7d7iS?9@&I0)nr3DyUR|8Kcix#<9+_(T$wl3NA8`kWzchVlmhHWi5px^3@u50hGCh z29)N>1_3Ao6oHR#eu;(}x8H)v;bF@{9L5HX3n_-eZK`Q~(0c;6jv0J_avHd}3}65# za}8)s)^tmkVTn~K_7iX2M^JK+CZZEwq_Kyz2hmQ=QbVI<8cx_=udJ0|vX6BuPE-0z z+&4Zi3cxP_6^8u+I8jof6eQC>OKC@#K#Tr`}ZUzT)EoK*11tdtuvQ;rE?Eg^r=J8nX>-xCH z)vVScrJ_M4LK7lGb4f)ZGnFC~N{CFg8Z~H9(O?S695N4&vXB%d5;8Q%l*}{F^Skax zigorr=XcKc{PF#I?X~yX>iImM&-?Qp?)$p0>$+hee(|bitjR4}xaZD|rNo6S>fwUv z-PHit4@E?>mnNHQ0Q$EDX!(&XF&QILiU}f=TY$R0gW6QyHOjasW>%PKNRF&b zHGczKsYpC@xtJ?P)?(J21#h~@hVc|_|wjDcM2=PJIZi0-PNYW@cljB+7 z!-w@K!xe%?Ml3q=Vg|}bLyAI4Yl=GRukCQcHNmdCpaw<<{=l6=G-C`&>41xRpZYXW zL^FCb9=`y&8Mt~pu$|rj9ueC%)S_xV{VB%t9sIw@U=Ihn-UFM5RT^t*mq zy(ejYTOhT+H8<(wg*mvjwrN!c#W@%mIJQ6ViF3 z!iuV%Hg%v-xGV3JhO#B!l;z<3J%r2Oml{P^UJQb2Lx2F1BGA-#p!oi_^>A)ppIuOH zaNS#PnV{-vXR}h$bFE{eQqG8$r;ga}z;!y7)D%JsLiF_7&pn zEk<+fgc+()2e$+U1znu0sH6mY|68Knde*0F5B-Jh{s_vGNo{%S+UDv5iv&mg+}yr4 zgMKsk|0eR`IMyOB3y}SvCxVzEBi;KvYuY- z)xP{Yp#XYzwiR27JV8y^#^x06y8%kM@O^5})#PQ(7oec=SVXXlC{$M%YMuks}xg3?Ue5F!*5) zv=wS>qBaS1)V@(MHU=5xl_ax^5td+X}s@kxt(~B*K0) zfyzMm=Ll@FLF7N(%tr)A;$498?HLg?zX3Ah+akIl+xTrYpep8FZG9i!5;{$|l#=??u;n1TZXAPB!sX&}vDD_oa5>d&6P3xAaq@&@qLUati!i%fr@QCMM4KqUEvlZJi}tyoZM8@DL)y z2Z;MueshEKI{&(#yhDIZWE#_HNTESDii_t(8DbNQ}BfJeej8Iz>I4s#YINN#tULk zsEt65ka`M)E^3|9uSe?hjWEv!|`WLG;y78U9FM%laa?8kzd; zcgt^jD;)XKeVDT$8;sLgN!#=ASpdcLk$)IAVypibhK+bT|G}{FxBh<`HjZXG|I@G$ zDBFK9Y{Umg8aD1t=YRcA!$$bm{?o8gj-iB%`9Byo-dNT74I00n88=((R9Be3;m;8h z7oSEQ>K8AAqxETvLH19k&&=`c#a-dhi;i3Lf(ExDEbiOOZSVb>GxSFs=eE$7fPxUI zCyAz0^eg)7lRROH0=-$45*XYFl_9^7Hin`QBo5W*-LPob4&|IGxboEAL>J9CU<#6a z5~k-@^ft7&^f(YJ^4At5=u2TePGcB!*P|H$%2=+@;Y^?gRHWlXSi4vOCA3S9Xg)*C z95Q1jRy_I5+tqm4v?Kfvg?M5n!>v|1?9|F(cmiA4hs%%UmxqP0RRC>bS`_yJ9ZkaW=yrgM&=HFab?@|C>wQM4{uz9!z5HOU26LL&391J-|j}rZW(LH<>-^hvG^U@|AIK; zUW0UUIrUJ}iqtiAZbA!2G z1r%qACk`We-rnmF<@Th!a_f`MBh`?f7plBP1?$Kl2>8cvo#d#|0yE}&euTgVu6SxO zUvE8GNrSp%`h1-V_E8A_yKeIJp-r%aZKVq^f!Li0*I10s@9Shjgjk=ujocJC6()EI zj4rscFf(wL*4V%a+tV-27x9gLvVYXcx?SVACQou%xM%u-K*i1H#!Wu^`&i*eM+LZ+ z?U*Rye(1%(z{h;ei({9powDguUx$qCJ1HzmhNaYZGr9Ygk&%k*{5BHjpA6UZ=`dkB zGikzv=0Q-nO8n>n4w)}aO_6}3y9XnUW}$uaIrySAmh+0&uhd*VQ{RJ)OzLfN<~SuN zD7YQlfMBErVJpgEz%-1)_JvX#sM^{i=PzDtz+z4looLqG(-REu!q&FWgATNrJd73{ zBQkeKx+e%(Y)!t8`k_Msk&3NJ4t0fcjSUS142ec9Bzs=&5>`hA9IC0vvcVCvNaL=9ltzj>{yL8hD z(`8-*4usV^1sX0_uM*K4*=Afer|etK7yJz82FGn zYwM}~rG?ALsVeKLtqu(QSKZm^a_Q3R^716(%{yEKjIp!Vd%xcmFAhcP<#JeF^49cF zie?t<6oY`)Kj5_8BiopV^_EWNnAB_gj)G2mx!h5nVHJAY4y}ZktWuTO)5W5J;K&&6 zy7x%)?Gm>D*7vfY-}q+*NQ7%IW5#_=V%Uf^!na*fuPyHDt2IY!r`L#6M~rY7=R=!0 zz9s?eiH_b>nhPA}pTw{8k)VunIx^=2?+5@h^)lWCJ-6IE1 z^ztK%9;m9-!Gl6A{=~KKS5L#B`ZZ*2?cIN{k`DRc#Zw$A-j`TYn9veV(<5V%3KyT= zMr@IJj_ABqSDo0#HDiWf6w7X-(r%xJyY31~N~(i&0aE;j z?v_%YM17!K)D2NLV%>aOU*0uG=F7{=i)b__@!5Vk5U$(j{Xp^73!7KY&Kw=J-jAR= z6%y~*HI=vBdD`5y^OIjiEcLOgudkp!$Q;cx_RT-_2(4IP_<6&}$A<{sSX2(+>p~SY3HuEd(NS~M~*x)%=Zq5=UfQbw5@GzDqxd- zPwmn}8otAg_)tJy){eOX3?dX}KI(0ur@ujbS|oK8?jZU9%E3MW3#wVlckBxwrzH5+?2mQHzWq z!qnQe8fVU&>8+8!xP6H`dYF`rjszAGob7XJqx`q>(}D5y$Q&*xT5_VK@TS^QL&Fny zwNwG!GjD*oS$~3T58(??#jPKN!lI~87Y;X^N2+`F?8)@7{|Dg+yF zbl**3b-jzz_)i$GJK25Xg@>4aZNr+Q@3({8he8}spr8xWdVvaqWV2#2DTT-UX9(Uab5Y73?l@`Wrt9x=pPy3nDf^=?}Cp^jMa`FBia_Q0p&FGkp zPm{%-yLma}n4UX#?nw6~E|0jqfr@p_A2&spO=QCbT%2L+n;#&mJc1D?`Z|G-(CV1{ zeQ5@^o#Rf?bHLYw68On@PQEb6hVQ&G#6GLUE>gg0)RfuZgTMC%^92Ivbr6U*pap^D z^_8%2q$~*=Nmqh5qaLNKq6eAg4IOA|h_fW;V3c6UAq6x8(I4pRP!BJSwPN;5$##4> zNq}EV!MDLo|ON?D)rCgadpxU`A-xvxyX{*)%MQw1-pRAVE4cCsnxuCAx z#v>GGt5b&r8@J8BGbKatl&*w}7nVG=4@AR5*VcJgV4KY;&pg?9MQHr;nOBzVoJFUU zkbuD7#cZbJmVJ#{;#P1b)%Q4~xPRQ}D!&^yroXz|aWyiR<~T>>Cm=2tF=;?R%Worv zDhHS8*a=RHuqz8&^o^D=h}G)Inlt%Otd_%IE%ek>?O7b0<9_?iw7$?dZP5Nc#fAIF zRlb*J3}!Z&fGw&B`otlL%4E+V6QG$lZUqP5q)C$s-ba15AIx)3aSKo9-~>R?SP^@L zo1NdfkTd-z%u5&{e;q9Rx`+>ba*?at*M?Per|F>@XE;tl4-QGdF@!kyplndp2<)%eBbcshpv~+qu)G*ec)yC(&L^# zcdoW&sdw{;Pe*Bxn>i*6SBTU1rL2w*yAF2ccU;D=m%mXRUebW452 zV{0xiv1`q#i`Iz#IlMG(7c)p9`^92b+MpFx$_4fXo;_Q0y3=yRpfA6D^xB+tamw1W zPK{v~KOevbzWK(1?QShB7MrY<`3L(6E?h7vZC~mze9UzdEH=2x^go9CWYw?8h=cRa z&Ly`*RkW74*F_JUVzQ^-gR67{8#ir2Q{-zS2Js}b-*#$G&3^0>6~%!x0?x%iQTSH% z^+AZIh5zXr@$RQh-1Fl3Un8CYCqmGufxbF)AN={ecnD?Zk}%XR$9amS`d*YAe3$j? zcez$z^O)actA@{lT2!u+n$o$FojG=f~+Vbnw-~ULiW5>7S=wVV|9o4LCVexqUw7CIQRr`l#3Z{AbrVSf5U~6?B zT1y9MeWCA3c~P)G3@q%277X5~-{Z$CuFY;sc=qhs&tJ3G(b%z%w&dO($M<|P^H4c9<6lKCGVlU#zpI4#j;^gF1^hi^M$z+ZgKj2!@l|`51e=Gw4 zwVYcvZ?26k<`G=D@Y(Q}MKOe`>dpRs9hTLnA9wNxtwHz?ApphnrLh=XmN=QUqE6g; z@ZiCSdqBE}M+c>6XoM(}ptoYT|Mhw=+0*Yzvf9|?O)g18eI5=jD_qCUT=(wTKmYtW z_1POiqcwFN#}Xd?EU$5Lh}#t!NINl8M!d&Ij|7i(Tlf!u1q(upLdbh`UueSv_hrUO3Ll3MK8J48E)Kr)_+Hi9X2hKHhp0p}8;3W5(*{cm} zQH7;D%m%d`Z2g<%AAhE^V<&8R4L_+M_$`{?M)KlPQe;H*({!L|5|jZ29t?O69VuPoHl1zK-_#^)n84T8-*9rGOm?lL;K6Fv)L&8iC@{ z2X9F@a5ywS{f+t|fOF#Z7G%Zp#P=_9qK;J0F^6t$&!{tJ&Py-#U|SOVqScJx zGtzpHdn!~^DoAuOW2{P;80&Y~pgXWOLjlo<;t$t_yr0!o#&2QlubxudKo8`+Pz1eC ziWgU{nlRnvF`lH(?;>9Tnq)_yGNl{W1Ur;4GD1R^Uig~tO#4j1RGt{4eP1wp>hE)R z`cU8SyTxq0VU1I#5|EMyp>ByJvd3)z9OQ>H7Hxe590z?Rtj{>~_fxjqye~Mj6xGi) zjvv+nLEm-Yz=5)Z2*}24h*u?z`S0{hWEhIMPpb6yJ*h6qQb^_m|sZ)!fO@24DWgs@IYV08Q zXUFcArTQLw1Sn?q-zNL;PK@^+JV#_MEqRx)(pVGf3XapyqpGH1wDW_!Z%vU1{ShWN z4K3)Q6K>g}ZN0;>nisEL6@4@E*@Nl)>lO!L9f@PVf64!`(afS_1#z%A2ogj0H?$w2 zZi`KaMtU$jLt+O@{yVRh*V64N+y6VD$77|%{%E|5(9+n3pK;NsXI6#?%c&l`YV~SF z$hKRyZtYDHNI>s0cqOfcTj;67{bNvy1;SMRCL$b82O*+f>x9Lv{HA0yzv!U*@SPu) zn3jj`?6p8aRX1<`dvTve_`Y#t$LeH+SV%D)nLBp#)yB%ZqbYdEfj=+Uq45X2@1zF0 zGdQUji!Av&gW;+k!H#rz491=P4J}@2Ga>E?+6@!(oMPLi(;E;N7>s>~pdP?G?Jrm7 zKmTaKwN?-Hb8)n_L-S?bj~_qQzxMl6AQ)*f*#lu~ibNJui&oyZ1X6(pld0gsMT^KI zUqm;l@Nf#`hQU}Y#D5~O0NQuQnw9s~S6*6pv?~1&5(alN0V+z-RIy46b+0&W9?phz zlKgeGJ(#eFQiDE9r*x;|5~A0DsSa59ZR5mah4g{i*LqFMH9viehqPcSzr@ao$FxFq z%i`|JIow@dQetMBf_4{H`jL9*y_}(xhe2doFOqdF zIyYV*Hxd_D`(w#YqV5#I_5yXpUC4`60p0=^ha5-(d6p?~92!ij_k(@}r}rjId%6U8E>EvB?Cg@_@Q@7s6ZW# znjL(v^>fDjR##FIWA*XbI9WNvC%8;7;$+=DsW=zcy?tA>WWh(5JlYyLlpc?Mx(U5u z)Im<_@9!^!r~H;}+tA{GaZ@0b+1o&I8%E<0Tn``ZS%fLEBQmA+1-HHtM3pGN<1BSY zv`c<~)PELKsM`Q*@O)NqMi9aPxIKZT8T`mHXKS1U#DxJ!xvQW09&Pv3L*IoT#$~bV zFBbR^Ar8x-UVEn)2C$+%$Rh;H+`@gF@@^EFsFB===WwF&@8YLStiz8=;wd;erf zZEmPItz?~?`nniYY^Ye#>PQ7C;|CvlJP!4Vc)P?G@yN%92TI+20YcPa%XK}s1)8Wj z)OXbFy#V+o*jM0;r4|yX+Gmv*!mI>!7=;3G9>|N$-T=0DtuB$eAE3_p(wBnWb)%2@ zsyifkD=$iniOxGzmsk=*eQbaknASf2NZ&z>MF8@Ga?CiE*O6JkEvY#SW<*V=H1an0 zrMuAZq0*FT8Y#SddD!bgic8Q0KoziQ21F!!4F5%3qli<><>iYr7lL3@jCM3d@#dAI z`?9mLgjTP98`$_Mzq=d&Mymtd9_~MTwh=&~&UM<2d-CEnkMXXw_cVNYKXAyA3jy8- zG$D9?b4IVl=Owp1i63?DFUW^D}kocmf z@B-*@FlQj^)3n3EDa(g$t$&f-JsDWRulwG;P#~N&otN>A#wbqgP*kLT0{AeLP7bb- z+H;9A=40P_85y-)-_cMBbEa!jMY$R{PZW1b*f*a6Q4&{+ZOPzl^D>vXCvN*f)uHWG zaW91Dhhw$4XU%%_`n7UTU!S5|l69&!8Vdi3b5H0>=0Xr$;K6aMBBkV*1I!-a)^`a| zi+>MP32cc}`cjQERa-zWc?0u5EI0uoxZv0=0!Ig4dY@X}|68o2y)TW409zQEKe&~s z|7iaTGq*gcEX*V7q6{f@#b-O0=m_1WclBza?cJVlT&`ayR}<_3ixdjrCg4{R<5P5V znLEvVt46!{T-p9jNSsizL^D!D(w?un_ll}RhO%vab5_F{-Zy@x2s%Wh_!fW7S4U7y z23?(v>ja;^%9t*Btn?9971bh+nX~jO(XYy+Iz&yqWj9U#^gx`sE9`a0MqK+hct~s1 znKAA~pd12g>lbsS!h&JD;44ol#RUr%s7FcTB2`U+*5P-h?YkdG=B6)xe10&|qZu_a z(W?@IKD;M))Uya(eUsW73&!!87KOk`e&t*D0=k*1ko}X#2n;yHuh5w~2t!0ni(8>n zN$7;2fWT(4JlmY1qqqgylTFy_fvKZm#IT6g`QiynOYAo>IOjWt*KN3d|NVhxjCacj z>;d2#&IK4m4Np&=o5aF0awh)gXL!m6O;GLEoevc|KTaLY$)$(B8VB9*C#7Wb zl|#?r>aW9+6+8t%f~3F=W3a=Fz-6#BO)64)7Q43fv(L}WQIw41!zP_E`B)lwDeI%Q zBBg&`S*Z`@;?S?yNh}IHQ+XxYM?3-cN)!yDhJW&?gfQ|A!_|}7ekok~{aIt!mje#H zta+CCetZXqvd&}5zp)u)x$+0WRDAdZ7sOEI@UYokMX7Pww^S9Y|mUUG>I}+Pj~UfdmtV*>WZR`5Rpfb zv;lCSM<>p9NMbgUl_kzCDx(k;1isP*&{!>$mp>t(^d2xZQpx!DiaC{)m4g_&v-^!lkoFhtI^F(P7OO2m(ck-;SKtq7|ZD*%+!d(_;t7|#bt zTW$S%=U;oF;8`RDVW`d3dD&DPk0S>ZqrCfjVDCFwCL1P%xEtvcUoOe@H*Z2vyBj_g zujQF7uBK|%Q3yW>4lg+>vze+d>suhB*-Uv9SWdSy5B?=U3}A$ox1b=<*v|rwJp^1J zYTSvhT9&bbIx-^0*3XT;g0j`kL?_0fU;8mKad;KEq0Wk`I3i}LaP9c-(Pcb{!~Jn1 zCios+S-U5|M^8=8Q2QNWP(_h;&fN4xY*3x{3YE=p^WKVVqX4if+(nELUi4TfGc`ZSpuC6+8r$;xP6f z)vnWhxQO8UBlH=L9L52B>Irx3&1mp z)V&K`{@wt8I0-Hgba+S=O{jy8xXDeNoesJO|Kb6c4$VqQ;bX{$eYwc* zgcECvTaigoGK(4iU10~XR9w31%s(-XPxC_#-HcSE@8yVO1Foo(gLw2aBx0izIO!@h z9}+-$1pyT1XA&-cPLg2Wk$ZlBdJ>GeT^?ru9c7i2AjmJ+sO(i48$ULmLEO z7`%?p4Q>{*$NaXW0an{@M5glM>=;_c#gET_l#YS=je50#LQdF{m6YIE)cVo8?1SlN z{^u_X6~!0<;M4CQW(!m%H{Z+d0o$V{aWXw##O!^b%Ah9|Y>OoIBxD}5DJlsD@g?GY zB}OT6=RX2|GkNdpH&a9}EI;m8G3pE*ouA@6I?Jx4o?v@i2~HUG|0sqLYwSKBMF1T7 zb)DxVOe(^HrB5D-w7I?fcqd$y85cO`JUk~6UIg3iT|RQVZht!(FJ6H*tx1vUVgMWT zmbfd#niTI#URP>tWS3MUN#n^e>9WX_|GVfWJKsdvbqIkmiB_Ah3P8o{XnxKGA1Ll# zdzvRl-YX05TV5=w@8n-Cye|Z5LCT9A`x@01$T9Dhj4#9Ow`m12F-8r5x9#j-9(i?N zTm_JD(gQnqp;$i*3Y}{1NRMtYHR}H=1Oqe{JV1_sd$dSNZ%@q>R88TBqJ`M)F9GODzg}PtxIkVkXyL0^B2J({XRx%7fKm7i4&p$ve7Ha zEI6P=c9&-AqH$DOKBzS!?LCf;j_A{+S`<=r@;gfRlBeT4R3Yr{VepzffZZQ6W#vVjCCizY){L_!L6d9@d!2g z+$iWMMJjth_pl7y0GTDu7AG(TO~2=gnI3vE!6D(eJETA1aQL87U4I~NTWc$FS9pCl zL~1o>Z3N893_MOZRE7QYPaeQ+!k}@0KzRc}9VoX@qAZu~uKJVDRTkg9%S&1fU>{6Z zkXfps$FODJW_&B1*2Kg_8#a6xXG2o}v+@unxgKiE=;IKlc2APEO}FWL2(Uw8 zxMk0g>t2u86IUyRX+JQSlB2xxj`!ot22?9y2Zp2!#|BD5LMTWo?1h^h6>eSwZ31qC z6b%)FhtTjQhl}A_85gF#fedjCE4Fw7yDr#07EBgu9IcgRpGZXIQDeqG0^^=qM}rY1 z!?zCb1O#{QfJof>>#qd>uYtW1eb~*hvREEgMWFMMohgygz!vK$x2crMo`uGF;GX!x zLFcrN(w=v*4drBa%E!N2>&=@tyz9(T(92Ii0i89LqP8A$ch%u&^q%ko%we5)(d|o9 zO(dw4rO7s~-uGm+iHig`FQA2M8tzn9dhP*6mKu8`O3(h|xKs(JH1sS6I<1MmDH|r5 z@m)wTe!G>TMU;t6PWQ2T_dQbHBdi{t^umT6^iMKG2lZwcic3Jm5QKQB-rrU3h0Stk zoaFnv-^Pl)$R0m!=ROz{fih$<7{c~9LUFEwZmykHvlGTr>NiN?jIz&XpRmrK&Qbb$ z_UzgA=Zjp01O;owycnj%9=y_rwx7wyYYYrBdf6Vp_Ha)SLh_{GR5_U6MDQOykdQ{{ z!VLszmp*3T5Aoxxv4|+8C7xQjy0G=0nK; z64&KjZs+GA)PgF?@He+)InKWDaYVwmVudoW_J1NT;E1h>A4F(;1u+u;9o!`0+b_rk zA7%fTv9nX;FW_ACjX;>R!nImE%Tj)!2Rh^SEcO?*y;{SLz6GcKPmz-)KT|<^KchyC z0uOTpt%pF~M3gE2QTiv0As)m}>}(^h0O$i-nppF!A7tr4_yWPGp?u$zAux*&GNM{O z+%vJ@xk}NrV*)qVqzjnJVZLe&mgvjnhdH-hb3ZsiK()_CDUAneL2()yzCoO z2HjbXKO=|=LIm27u@C)>mkD`5z`b}Wr|PgokvK3!8$sbIb9fj{YyZ(6SCE?4mi?gq zd}1?T{&V1D#7Z56Om=K~yElJxWdObF@5vigZS!LvzdK6@il{xAdF8}iBlK^z;x zqRT(#y!X&j%zCLAwvk4J&F@lw${)%;GJF#j{uf(_zz_mMXeHJJ(J7b@6ix=`TS*l~c?_OYa6$k3pYH`jQCg=i`@#d=AIO ze_*-4Xg)5!IBDx~{GnuIX{;Z8=rU1>Q5E1hRRLW(DJf<9n=^_ZyktxrWazaHk=;Q3 z__yeTOtwiZ*#e@BfPkPrR;a^#0U!u4BvgjYEaH3odkCTi88Q)xp^iu}Rr^|b0f6v# z-DK=-G{iV-1RoIl03=RONw&LHIQAVQy*T2;m&IKWu~ISS;chQ5NH3Y{nnW34CqA5O z=soP?RMd;o0E|K=45pY5c#3|@OU@IsjB&6>H=Y48_7lNo3@#tcTId2Hiu}0>1)I1x5 zDI~Fk)yd|hC4fYK(EbNffG4>}o#P!qWzj;AamE1=@*~Ks&}=!yjZKmh zRDnn8O%+1`1)GS9>+Flr0haj_#2iG|IGnZFg^7`v#?VJ@rwmB^+IEX)j@ z7b}ok|GdW1q;?-k^9ZU~JMKDZ!vKgW0L`Z}iq1lXxYjo^{B z!5f@R0|?$mL9q};tU|Q&L*h>sDWD&#zy}tSE|{zV00;r=q&ANcZ@iXCgWiS$sFCs4 zFikiHB=hmzdGP*yf-s*^W2t!W*9P+^_L=a<*W8QE;57(jLJA~Tbo;Gcy)}J^C^@y9)rG-Hr_YxD>ux99^oKT_ROL`SU=x?8djqphB?O zuPuZ81H0rh1*+~6&&B*I2yA*Su~(8kJw5GxFhHj>KcB2W=>d*yc#UB`>|-9nDI?M^ z<3cDZ){vw)6ZxyVyNqdb_5hR&gq-7CyIGHec+XwT-Wr|2 zWdAn=2l)^jzoxK|zy^JSd7l&&$hZZ_We7;4XpK&PiH96GNZ5r_zqHMtWVw5TfyVNg zvdr#TYLWZYqE>Q?+qDbMzOX=HM^X)6YU-(|81n+zuG-?y*;a6-^=O!j4tB#ahComm zKisxhi5QQ}W3N=|J>Zly+j~n$(gYZT!rtJ5Kq`(OEAK5~Im(qioL9GQGB@9s>gu|v zZTxCmw_cc;5~Yl6TlDXFl&m_3UgUUs1zGj2+qWO$G=}MmDaH`c@ohddOm)rXlR6PV z2Qz9Yh_X;O6q1!KPjq+yWSUf-@cTs8gb#n6!ozgY>*^?U0KM|mQFx&w#U5XDtnb@u zH9`Hn9+g!>dl&mJREyhbyyfNu_1u{)c`Kni48$(c(AHSy<*;bSxthLZx0 z9V}XMQEG<~bkEsw3Z?MJ`R}kd8dLK@RC(;T>15}(*#MZt3C}5#XCqAAxuD1lVIbtP zf>Hst}#5`H+4?Qv1h7|UG);3r3&$`y}_aCf+ z-}u9d8LZTu===r)q-7?KWyjEc=mu&uh|k2}7Nnz4&=?<2f8VOMSxmY=cScdLwmOn3 zUikxO1?t?DeyEqqfX2G1{CJ(s*BV+sw2v!nGNRfv+1laPmW)*%bOkswWCl_ z@1*U%C0u9q-g~Ba^EKSg!iunkqwXtNe$su3(w&e$FHSS zM1pM)^Z^_N3b1m8g!gy|s(%jB~;Tp$hr>yGV@4*sRhxu2>vn!VO#buh)=lAsWnAYT- z#73>KuE3@iwVz_Rw=Y&WR#qW;uPDS-jww)SWA@>ZAE?;@%T$7ro+#auKtkDA@ZwhJ zhsu-mxaapJ@7o2G^?mW-s^2xvIB#5eXD2o4tFUX^1uWO7Z_Z>r=rH%DHLrKmvpwv6 z!tw-hK5A?C=B*^i4PA9gZ1a4wHIfal3DkK7=F;OJS%$^9C>np>Dtx?QQ_cHio5p>h zrMJJ5)L$3B1p`o=RITJ7uq^xFUqyF=Sj;X4!bWA{G2IDUt`@ALVAW9g?oL>keg66z z0j~1Q=eBv7)GbAq#ZVhdx6MR*C*>olO$>e1N$uoCcDX_M%||T7Klz@sc3#BsedJkp zi(O;KIEMU(7FK>DsGTgQ!y9$dR!SUw?+Y8VO>U||yXV!+3N}vzo~5&8GgB;JEe>Vo zn}EyK0ZoN&Hq3ah{n$q{vs6`ej$ZwA(0~#SI+^f2D%gjS>YoLL(6PcN_}V?@BKI66 zB=#g;P#lP4blz>de+5bmAz|TM|Iv6UOHhqb1V3k`>Hz6 zKNHf74gf@A`gG1@0R?K4BF}uYnHGd1gF0^JjOlHto4xvESGi5{{kHF|HlQC8`k8q3 zz^XepQF3S-tP%-n5KZtjj+VgJVJn8-`aZb$h zK;S4?+JFp(RkI}+bqs_E)H`(RH9q!cd_^qH;<^LMhQN@e@)O?!$^}on!=veQCIHod zMjxj=RrzmM8|wXf9*ZsGWt*MlN~5;`01t;p(%mMHZ;*Kl*Lm}iNfi_}s#Q{wIE10( ztEoBd=61j4x#T0X<#wFZL!zdzUHZUC0TLv@C2>< zp0LTSeW0r{bVCN~m?frGB&eV5HQUZC*Xh0h!%MFkoo}C3()d<2!KqoD@;2g%639@xK=) z2YY8-;}=8Y3x)cEz$BT8->+8%lg8I zK-hyd@4X8L zfA|5MFKbh+jC-N1C`?jQJntd6K+!r5XMz=uGl%}1r6Jn!-b8aQ;$36m3-^$1AYw{a zz6YnlE9qpKVxxc`uw^VqtAsN=!-iBpR8?9I%1A_^xt!| zsnMyM)wN`CFv>$o3?-k@@;q7kQfw6LBm5WGpDX>19eY`<9DS}~PX2njCz2-3uHg%#dST!)I0uXGOIb#22vpCH%a^lcS`w!hPJ-0?n0SVT zdWg48wb<26E*=Og#}JnqrJVpW2S7cVxW-$r&hnc*uK!w^m{)hBB#KqmXBwRxZz%%A zmV=;wj)eUqh+e;%vQ8A6fn@$Ty;ICOK))l23WiOki|@U%F3Kj_l5@kjQ5#npf%$|W z9w9RMDi)Ky8F~pT!u=5}Kox3=r|(g_1`60+_t$Pfu`<8d`_7$Z3iZeHWl5FIl&lysG{rAg_<#2Y~MtrqMQ-c^S#DfWSLOl)lI0zHpbsiQK~+ng~K z>;vzllXZ6^WifZ$)*LH6NnKU=9TPsfH3IB9>FpHU8M+MEk*iFvCu$WbtJr5+2nEA33?5jKDq1b+u8N@os_G7 z$bbp)6621|8A{?)&ii?;L#rtuue#pc^A&(VfDV20`dq0`{x5V6AL>_kD}1~sV|1DJ zlcT|?I}+72{=?o%+Z5kU>_Fu+`6KrR?x;5H8V}G9G#yHv4oS2{a?wzKx?E}PB6TJ6 zL3(=nXjkBxY`p3R-Q;#);`3Lz?gEF6v~}vc{RfzReQPUyK^Tu~JGG%vDv^xj&c)>W zl%;meYifGC4QB(fK3{axoUH<(GV^B6A-DFvITKo$ERW_ZSchx%ZBD_g1qV)wVTbOH zjrZR1#Ycj4?9p^0_Zov$GT8=&Q$+KmYN+F+>JH$8udK0(XBAh z(g;m26x}8r)lWMZ2pW@+0@&%g(l)oBDCXy%+W2ZtaY}t`S(rqiqs3lw#v3gfRmx5v zPVZtK2WK<=Fp;I8kw+V8NXwwlu#~#(o!=s-~!Q74`Z?#A{1>RWu zbAMM@G-#86uH1IpI(R$ma3cZUE>_9%j1`lPlHIZO_npO-`LaPG_aw<+the^FlIpVB zIgy3O;>+5ZqE4}C( zTyWAi546S1;zfhca*Nj8n0;C9nWI@i>I-fnt_Gxvlo@6jzi+(XY! zfzEd%;M8cS?|ZV6LDtnhs2?a+7VDkfMJ_22n@3{MF|~FgUCA?=s>3NfowJT{g3{_9LeYE$gp#>3J{O%(A}MQfa~a9Fh7 zIiNv!ee)9Ya}&@BOgLV%DAAH8cq%xg@{4Vt?o;jXcJ2t%e4 z1~wo&gQugbtE+#qOK~b)h13J))&$5jH(Pi~SwbMky^dhAOi2ly*p{73f=}EMLVTru zY$tt1LWQS;E{6^Y8u1$T0GL4jYOlLH>hL+WWD|p)zI*8IQdK~!W=6)vh8myMRI|dR zV~-W@UbHm;`&ey=?i{*Q1oucnQk5~Qmp?-o}EVv zIcp=HCtWIGbZ}jPad$(g)1n9>^mi1xE7kvXk$+#C;jW^dh~0Kgsj+SWm@>83t&i#U z<|Dg+Wkasy_0*l)G{Yr!ojwq&Rk?cCE@`FLUa3Cs%0lHVJ9~PnB6+1H)WYp{zHRK1 z3pN%D+ZUJFq4^syuOHOtb!DSRkA@@gRFB_;@9uPjzefshJPij&gjC#$Q>1``bxi@B zM1d-zCbBpfCZ5Q1??T#96s|2PqL)JEpS^(IFbj8tZp&IzxetMnU2|WD6!Y)PdA`DHt<`RZw~R0V#;<34<@-a%mltd0?@H0< zS)Rx%-Z<~o{XXv{vZdux7kn5D^kdbl>Q<6zNr*dI5r(QhNyigwd{~N=JTwsY*SII} z)mNk@|Ni^$UutTCz&jzVoZLtS>Y%bwhgaRrn>PhO)4&`t21;R9eM>!}Tbk&#F@_N5 z-r<6H7!owT9lr9VLUSO31HJ}vFF2P9ZUAy%ds zQKITjoEUG4mZa)3yVpB2qAgo*9>QhA5eJubG``t*=8WO3 zt5e>-c03kq{ZrM;{+#MDFGfXtZ zaK5Sl%v03Hf0-qGydcb%o1bqLwf&zCHa(qXJV66pAh_goCBnFW(&WjQlgFhXwPNU= zn2XrBL&+qVsUULeSWb~*@Eq}j&$N5<3!H*ao}4HirmisA+qOA6w!5bfsn-QF)3}nO znf3WJcSSYlsZR%u`5BCRCDG&{}P#NIO8m9S(FHw?wq}q0gK$48gMv zg5WR)<7Zy5kWk%0!5@i%>@IYSENIG~;0dQ}Y^x{xyN`oLw>u{%hq5YkP~wx(AX6)p zh-4#bv>Hk~%)<3zcetVk0GRCBJV`yAoNfXDhyS=M+oy@kX`()-48B#eeUtn;H25@p zc}i=WqZAgOlDJuzZ^<8aif%$TuM~XZxmbIC9Di+5yrl5brAmhtw}oul=uqxh#)`X$ zm&cZ8fV*xLtr>n7&4%a6SPJ~ol99cM$#?-o;h{A(%L&i*OR@$HUw=@XJdBD4i4C8J zI5rceJCD}M5juwp{8JLLe=r&ue9{hoNVfYhw}SlQ;^8m9nVvoG;w0f zpyy20I^tNMO&99R&?ye%ept*tuX%odtkw@X!iC;=HKd`Te-S4Zlr5kH7e{r(JpS zNBmPUqBvLz9~A7Lk(b{&gFfoAnk^2Jc5(tWD0!r% zW7#pHP7V7`zUbTazK`7Y{H&1=3EZL#;8noh$4KBt*X5|1If{Mz92QsDE+vRYahL3$ z4-3~1{>y&`u8jVF_A);S2|xi3zqko8nJ8835mv)G>)>_U@#Y5CKWgpw9{gvm^*2vs zIHVh;r4+%56h2LKfe*s9LB!nG)4=;_nWsU*Oi!c1e}F%-RUdsOBvBw;;MP>HLv|>Em{J(n45_YBT7rjDkNtqBYXX|E_YvAkb#44Hg4+TF@(|lJ z7Pv}Xc(xV*HZ`yW?VVyh?2`!8L>;g!Q68uAFp;BCrv+5@_KERZP`Om9638$I^>^5B zh9Ryu1?Dxbv#;7iAHiV&+ zZrBd_)6^IUn;^f+LZ@4kHKy-guDJJ#41DVw3Y5>yl|K1=!qlnafHAKk+en&QmU=pV z#@x9_*Bp7B?kQ>Ry%LDpB0<6DM=H}C(vEw&cE_NFIxj4Yw&HL^`yIO%r#gz%uR&2a z$L%V)FZQj>R@Uh2YLXO~4VL(yP(7J$a*F~4)h3_6DW}26#1FAwrs>kcEuh%lreza1N>=;)X9h54`l2ExUB( z%4$rlYtRs!>I?nMEA&!k^^}a-;z*wvTwI5iYdv{h4WdD;=m6+KM{bJhmI|VXy%Jgf zXNc5TC0M;m3z%ppiJ{-@USJD5X`OLGtm}hwtzm{}h zYbd@Zme&33#-W#Y#dAvxqcpC9G{g%Fowfsq1x?6`auM`7M?jxQ<3QbM8Z~XW3g@b| zWqPL@#W4_|pc&0+o56EW&LL?*PB+3Hol?~AO}DQ?@$T@f@s?B0d$_wB%$2n(gum~0 zB_*+DmPO6iue?4EotkNus7M~&z6!mCYLDjTvK*nHsYodf-R^Us|>pE%F_`Hck^fV7jv^#lZn_79105(Iz^#$MWmTl>*h1mnc8MB-PEizu#Mz@&1`}Ll$cL)o|DS zjo%^K9l9AD& zS?+c0mOaljvE&YnSn>+ACSj^uvNpxL4kzDe4j+YIe{Zm(tTET4QK&+ImPK#5i8oh?f5#j?OX2_XN&?e zKsEoZQ$1L3MHE=w+42Gk`VJkpI72q>IT&9i4l^QLe>@6~?}~0H20a2)z61V41pvR-m{-VLo3(Nyv~e$2>Z}I7<}LvFNoh%E zc7M_-Cg6wd7^l3?IO8kr+jgZn7BsbqL7{=Q*0!%M;W~g%;e`t~k|PXU3jkWT$ubth zWFU#OMWneKD`s(>TidsM%d0(?u7Lfohu;?glOu*jxkbj*`jVI+>e>zLZTIh% zQ;PGT`vOnQ4`iXWWiTTpy#&&RcY)>zATXJ$@8beqd(F&5+c-tZCjsAJ3hN>AU@ycr z`^sybI_y)>z|gWY6v|QP1pG4^>FSjdz{a2S-bbg!<}k=IgA8%Sgobl0+8XP~6LqO8`KdWk@qM11VCiE z2Va6huHHbK4+~6Y4$E)mwS$unv5Sr*3YPbCZ!o{P7OQeUxjL~sBjNaGE+B4T59&t` zf21q0?ombKIbS`e0V~<&^f81ofh~bH%ktC)8(Yhv>rWd1em*2;3AA~Ey)CQm#Bvxp zpoliky9*pvGjC=hC$oajvHJiD6fpeVl@~|MFC1>YU)+^|T5Y11T1Z_%=1vk=CL{Bq z#3s{)nTVC%U@VK*0hZiNt(cNS5y~ z=xD%}ZKG*@4-{#z6Jd;n!*i|2SLVtf<~OwW7G=*rnjEx}f#xcnhA%r=00A6don57d zXaKIG4n@H#ONsy0bDj2=f0hCYq=E?4=Hfb;V=J_h)trn_0(kun%*YeQ{1Qh!$%GX> z2D5suda&K(@lrp2;{gZ`2@CK&2f$XIq(8;37>ediq65uc#~0I4>;MLJ#GLpKC$6BC zVvxNOa{&Fw?`NMmi@sB!)y^fQ4>03T{XO_SyV*C^0u(teIP;dqlzh`+c3vb=D^A+M zN1Z3{sAHWhtDjtCa*Il(UuUI!MPXVQwl;+c#|;L+zqnm;pVj2d^jyu8&p=TDcJymq z`+9n)1=fq=Cf9}!@c)8;)8A^WX@YjBuadJqSAzHoL^0S3RZ#LF-*g<-%kciuZ%{ie z4Mjh7(A`wi>}?4WfRl$B;JL_5^>nL{$Ml>73+OH4_rNWv8&-@6b{c9%4@MxI`D!xi zEo7mo_C_9it0@SCL@LBT0gyO#?pkGRQA9%qdGTATvNy=WBxfho{yv=zgr$`tHlbdW z9-ZWmOrRx}{~d#77nJzm&9fVg7o)Ki*yJ>h109g|J95A(t$~*sq9@b^b4uRfj0cM; z`P>9~X16~&#(!I-)Y5f>;2|LO2g6(dMeB ze8txuGz~7m{ewEDbbfHJ=`o00PGD#Sc4E>$k*Obf4(WSbT=)=@J(5Hc%f_e-O6@|J zuwg=Oqa{g7d_sn?<50&mojfDCPx*4_Pq|n?;1T*IU`O!8lnBH%sPiR^xNlHAp@1Xd z4%Hn%_#kmRj>aH(T2al>Z4J&HEYV<$axa3;cC1b`k;N5Dd@+w$@OE*9ZHD8i7G z+tzsXQp-aC)5dUP>Mdq4tH0Smtxng%w)ED(RraB?GY9ok#Ja)xRy-yNb+lo~-HV8DMr@2dtwEcW=}&9$zi znTjEN0I-#+V6ZyT0(T#6sr@7??NuCl+Y>t_N9$Fac>{!>X-E5o!FY>#Q5ws$a9f5q z#q=vCOq#Tc&iT)Oa>_L$?xzbME(9R0--l4w1gGeS3Dc%YV4F9XGEcg2E$pq*94X|$ zs#$?>Wk35O6DF*{nm(}8N3I+SX3+sp1Hmv1`)s#K{UuQHMme#VihLf2+8c_+Dm}p< zmjsAlJa+teUV!4_V5>=?VE3iLruOv$S_E4m&!54^XZ8Ulwk%Alh^O&cv0u%+z2qE9 z6Ijf?Yhc;VM#QldC89m?X1bqoz^nmeqmzZ2?9Df^rt1C(dbZ+Z+=Fe?;HBrvaZH;J zh;FU{ADe@KU@PoUuL7qme~)<{+gqBD_2Jd(48eYOd^V^o;NbWGqhogZIwJ34|K|U9 zs++E+4u)_?Q)OjCaS!a50bzrzz;8RCrH(zTO-MT~j06ku4v70B0oC)Ee8}c^(gBg9 za_L}duZ1v{M^WHD4dM4&|`k9vs}2(gHC0P(2Z;eJL8PD7ZD6%`-m zDxD0QBrr%G!OlS4-VB_59F3~`1y@1gN#<=JSvIOY`kljB7{03<&AJL1R(Qa48p;s2yZa3NX&>> z21}@h{u=C*R45vEeNT+xE?T8|`KSya+PtQUhHX@tz@L_)>vZihXX0j8iQw`upQqvqRID;aGq!x%k*Khv?4^re2AZv=$ z-0QjCG-({*u1@WCyt-nsdAUt;9KR7YAOeFO(7z5V;1=BGfMAPLwC+ZH)KDm4f$;6Y zDFkZJL;K=>%9+tL5)?_IPT(>{7`Njk(yYfQQ9 zAMTv3Pyo(`SEWrsfI^-eps`y5Fo}Pt+ySL|ED$~p7bLPmbzp}U!l~7!#1Y%g8*Dr7 zk@~>p>9{F(Vhy-aQ_yhxK?9#qF8e?-h} zH}=0^rE0Ru-(C805x;qFRbL&nF* zM2e7KmshwVy^?ma^+9^a=hS~3+=~XZo?$%bQ}&FSKdtM-?F9Ly6l+U zr^`!85vvo|2{%$bRP#yY(v}8wPG@w@eK`j$h_XDutbG8cK4i1oVQz;bE0@3!YLbKW z=m~7HePK9Ki%2)m(v@F60_i*E*)BSjXiZ`GcR`O+h?{XLY1qLq_c4C|_&{1Glv@8^ zduJCFb)Cj>>SStB9D4;VM^dyznOqkS$~Nwa7y zv696Wi7bP}fQf-YbXViBfXvFWBsnUgFboYK0u#fqpNEUCy4cITh#St~%nbAYy*w}9 z=lgu0U;?nB=0p=iR?85HiKGUWF+T<~T>94Sn;IP#;0= z3Gk5s(bT_Yv!zc?O)cUutW_Ua{01bTrtex>G6yKnZ@*{m+(newcc;kWFL>;+Bp5iYbh0=(+wgOzhYo0IrBBWw zOKuyd!r`tfAQ#_onN)BGoRua&!iJXWx5uq1FR0ZEk-#fD`LCVT3zr{k&c+Pie$vo) zII;klICsK;wi;Ib;)jVL2myCX5$oIO%!b}V{{o0xv7>(2t1}>;zdt2vn4jn+Hih!29#A!d2g zpKgqbe$^vMC*P}Q(`3#bz}LVYH_^DEIntij z6Mzg){6FrKAq+Y9&3#hn6E>ovg)wKzc3q zcIM{wY@*KXHS4Uh&<@@yR2L3}1R^W`n*BV-=T!uTMLr?95r;lIN{pzMb08HM#Bf~K~8xIXm7TpgUX!u@;lrB$?qg)^l zE3+U%rNN&{UIWYD))?5x_G4bxOHp4UQ>y-<#QwLGwI-WejDtQQ>8O;NJiew&8f9wJ zV;hLciyE8?xA{@bM`!X!iA~>a{b}QcqPOpu%f44Sx8JE;`OkMIzXUvGcgo4|AJ495 zy%xvzwmU7)IeObI_^EI%)O}VhJ|cFsjzxeavMb=pAY!KoP?&LxF95wekp0#4GO|@& zZtN@0xqu1Md{LoEzbSJilAO) zWQ{e{zTL5zzlAPZmv#}}kdI-{v1cbf{W{^%kaJ|AGourYVR@Hha4KS#_Zg;@os3lz zk;@#nnv;Yz$7jA$+fSpd#l)95;~-XBY5%t?V*2j`e!m-^BIvEN)j{;Dd}gL<1Ugke z>Axr_fkeMmRQuo`Ohg;eDiXEzGs`!SJ?W0N&;O3rnE@>)dL>8>x8V56uvFv6XsgtE zPbP&|ApF54rOT)7P3v{-jUQD}&D-)012W@BV7oqGFGNebIq7utxIf0J&ro^gDw!Ri zRVrEb9Ai`Ivw30I*OrOREf|sh!;!l>U^|_dMJ*xx_g59GbvS9SzLHIOezXHp&z0Pz zwi*xWEA9Njt7OVHc1ik;aOq{_szN*GX@wGAJk>pO5kQFaF$mUng~(Lcd~=AgOsuh7 z2q_)_DgiTgtgh|3o)g;3ucz3~)+1{IM8%5;8McK;OhBU#!b5N6xjJ!CqKrigX$VTB zy9`6?8pcdpVhoSd%eEEhc#LdX@^azcaN1PUW3LL?n74Y5y`$Hia;8DfkR}}_y895_ z#&Y~kSl%%LRY7Wm{bJQQgv9|Y4ChZIg+IeNuJrW0X6ZThr{56-hzzv2Ptgr0#q8jb zzDe!!k#;()N}bg%K_jE(B(488tu@S=+y`;L$= z!&=={Ir`m>$&tI;KU$xeWDI}W8OI}?heH_m7ZA63uCBj@7jbVdI_19siL;n&)m<@b zch!%m&za2|&4Y7l)4Jn(h&aVZN<|>#tBB5ib7SMF%v&!fmk^YCh+bEPnMy?|zRmu< zcjy<10!9x_f8CvSo+&^DBw-%hJvD6(1)xOkaAf)({o#YNg;^u1Pdv~&(e;`NU|P-n zDS(Dw3SU5ti`~!cvE}ALUnO>TO)1fn2jim3Rwy~>e{UE*d%qAQMHQH- zNKIXRldcm@nS9Ak>>miIaf?bnQYlq3Apv5ls<IPa zC@KocBL}5LTd0uq-Nsh$#(wOU8m#|5tA1y~-7dk~L?L6ib{~9W<~)Z9N0HfsGI)8i zZdu7yRg_40i^6Z^PkI8ju~5asF7KWNbizEYW*QyQ{8px1IC+E1Nw&ibzPuHXBjR=niI)`%are_MM@Ya9=07tn2fRB)Xd?~vWfp4brNKT|4zy=FP8^8izOhKs`DFe;N4iO0312DSh_6OM zP090)ae>2m``0YOjZjhf-EHh%O!?OvFE^?muiZZ7M0thk#ExS>{;_={Gvyyn?$nqO z{2V*8l$!DnW|qZEDgW5;$D$wCp}zOOm-*khp{xn2|6Mo#yBYq^0>ztVd1+}6{lmV8 zjhYxu^zH02zqYpK$v-I8t{D81muKOq@(jOZlkmA>PRHwJJm0^BimGkbQfg}c={x-V z{7N}9!{=N_hK7dHzt`z;gs<^PGHMo*@E1@#(qMe+J`H>5*LM%tg@n|$*^icqGm-H*nCBlgaJ$dcjfm!Y3S2Y~d|9Sy z`*Iy4?+dZVY+b%a*&iyV5trLmETw**+d9UGn4L7Du)FJ+T>* zt7$na_2RNZ3${6`#3&_~N6JN228;bEIQV9Xw_S7QEA3)>JSx5#Q#v|2dSQndt=P^6 z%vz9wnzhJbUkL?u`!T+P=ltepi+zvO9399E${5I2mJ%4cy^3aU@ZW!*;!w-vt^a&b zrzBi1N`7jzLTaot$W3>+?L%F zB=5`l0@tm{8hOqS(n}{9d5w=f-X+C$3}MVsYWbk!=6x40ojDMj(a)dPXTd-gS;`29 za>^l0k--IX>w(@L2}#Lyd?{K*PehBJaA3i*v^Loe2o5|Q$eC~AHEBDOqWSFEGf@|M zo`=KjMe3hMk__srcPpnvKYI3zPT<>^jmuuS$SvkQ)x~2zX{H_Y^AiQa4Oth;!WUX7lp8`Uf`D;#k3{@$pFLUc_NUJdBWz65{Cg9OCd(!@!$w<4m zI=#n3#YF98ZdzBaY>|tU<;Gf~AD%Lu>=|${F-h3|;UX3jYxAE}RLnV-moGN48ZA5B zK0eKLb@SVs%T{~3yT9;YJy+Ogfi0-ybJWt%^*T0?beQDx(GR-4g-oJP60vP$%u>bmrXJnb2TNyWbh^hadC0ip`6+8zWHw3;`YddhGQ?MH67&Sl)STw zX4Pav+GKZB+-R$taHLd#khj_Fmgaei98(WHnYy*o0h%_2kY<%wk^WEH-D z|K4JDq*RzothSD)q|jjP?HJ|M$dh;1k?FXssach7u4g~=j5#MSQ+yLq^K;`ldoKju{^O57 zZWi=fWc=~xpXQyPw%bp2h2^%Md$O-=tVTVqCoV_GDjI8Fw=q3=uETL|S3wq6+d*$% z)^ktZe=)xL-hF$nW?5Moy@1uL!v=N1_S4_*WENyvkI06crFr-F-<{43hMzFHX8jJ~ z$+pKWJzIEMr7X1xrkr(3wne0a| z6#EM*V~Re#(#X51?laem@FP3WlvR~xsw0SX&+jnvn%}ZN8tXxIyxB3Q|8?s+k})D8 zBF>77%QA1ER?D!Tw&1x|e(I=Ye`Vf!;po~#ov2H>H@mUPo^U8X>9bZ!HH^V}R3Gfw zDrEN>Umk(*8=;=#U^6>bQ-%3%p)F~+a^=cyq#i^;*#IH?LweQwX!b~-!lNY1?YTiO z79)>t;RXO>ca`X!$v=Yk&W>u_I>w)60{4&%bb5 zwQ2W;;pF^+0=?<)eLnj&ZaT~ioyN-7?XHZd%d}2pvK!20Y~6+MULJC;r$1w0o%O)E zp{bs@bJ75W zGdgP4Xj&?0^SxH5D%;*xaJn}U*+6};j>KT34X?w1{Jr~3x%)z zlkIA$zu4JG?3_riEN#G4%VpV^({QTr7L1%(Rco@}an7#M ze!Ow7YI>4(iC=`{+(r#!3RP4v9YF*``FP6Dq(QkOoZPhzF-h70G z4yiD|Da-a&fx1l>>q(DzEWMU^+!TX(cjbq}V?rCKw_rp?+_PDi-`y8|cb|r9Vho7l z)BD20RZPN11#R(Ct=e=z7`O0PrHnI+W?7&}uBM`*qG&~^gv;m8pIbcVkPGNM60+PJ zW9RqHM%>XD?JRR{G(6(r;c+6{xiQ0%0Xs&tIotlEE6+pW(B@riZ1jhHi`}oBIe;~B zX`gzwK*47`7rJ$K^Q`7)$JZiT-1~Evv!A2`H^&;GfYRM^k)GG{)*ewg-`8OhyV*IB zBzFCI|DKw-(xJ%%Yw|wh*}Fz`%}$SF#OsA;j9sU{eXn(#87f%oTl}PN#4cN&N-Y2H zdwd{ZPGO25x`NHlc?7Yx0mX|JwfH=>e^?uC@a6Gb7F{ zi1e&hz0yLaI*7mZXU?2?f87pi-kGKK9j&@RM>3hc4<4*802-Xi)9(;I)`%tTM*^SO zrp?T(0Pv7J^}R33dgNOdHd+Vcct_3&e*tUh({4<1Sb}5NgY8cbs7A?i@EFt`ns|M^ zHQyun_U)yr=2dcht^ukcv#HGv73t*%?yb zCqLF*RTZVcl{J*lppfwUys&fAZ@ulXiG!{B{$@pS8F7 z(J(Nui_unoz0Nt_U@GOR={VPm2QxrMg4<)u+izl!yYk(@cn`Mk`BcNk1ddA=L&fRF z`WuxQ4(or4kO@mrJ$U84yM92>W)7wI1LJxKrIdu^uCaxF|D`t~HD;WaP1a$I>+T{O zBwue8ML6mnD%iHZ#Dup#|N3{~`Gy0g@@8gcDcl}ur7EJL`OAb$)eV|56?5jMqMX-l zjSLSDZy8#&WO?|RM>}X$SA%W{Hc?Wgid8}4u6cWB_1J*p{LzA>nM9%a8B+;A-V45m z4Ww;sY*I{jN%?>L?wCE#_{W)5{!!;&o`@|djXgPt^jf%ojl|Ra$Nyv#f1m8C?l>z4 zfSd7`!uUKO)RVsJNT!9JdrX@)T*h!B1s%v9EpW}3L{&$OZG+4R1Y`XtSQbup?L^1y#<{fm%sH#T{4sw$Ol>!Vk<8@iJ{ zH`Q~g@7}$8k*XOfqOOc|er)sA%0|~(^IfJe`6sLGBh(yc&G{JDHQMyVXxOgna#N*Z zQ61)A3lz~_!PcNrBgy;8kxs`sFkrE8C?N8garOt1y zq5zYWtL+tSZEXh4?+0oB{L}P!>0{r-oH)nX=EdGc=1q;ev6JQusW%u)lAT0yBtWY$@w`#S6szM|Q*i%5SqYb8|d$_rWGGFGYS~iAQHrp%2<;>Zn-02M#&i-pH zBk%rt?!5h;US1)SBON`tE4F>yZ1-A)6QJXGso=OD%9TwtG$HYt1>H}S4KK*b%I-hI zcm3;amTQQVh4|U5q!Rt`;Tm9fafGD{5z--?lR~s#duhuP10Lm+%;4?y z$`=RF8JIo$U3uB!8~W;;GSbpFJ6I#mdhNAA;2%Q{z2kT1e6p@wu^*odDUG{AeMhk& zJEjyyFjKm@H<#ITM}(O?kHG4&wV(KMm(O+EQ44XQ0InLYLbW)B8^@Tf3^9R9nO5-b_4MGUqkd>s^sJC(tMC ziPS17JTrI;k9q!z@*(cj@mZA{@6^3^UpTRB)uvCesu?DJ=fuPwH5!(3D;MZqxNxD? zLSX{s8_S*vTiw)pITQsdmW-3bMO@}%RSGMFTeXEvYg8?tSI4Qx0d{LCpBd_n_CfIP z_p9-rwQtO_wM;oy(le$D_z|fPr#ATc&YUeO;Zr-RkG-*$i;xzvY`A_`4fz{Ua(8`N zqT}q$i26|}e}RZ)t2eh@TMKY13;F@?2vM2$n5;4A;j~~VK>GO5Gq!wN>GPusLIEVg z@^vBgKg+Qiki?YqKPWDs3|gSs@+ zFrZGqAR}9pxCCpBl47;({iC#Mc?8_#YZYwuZleX$7n81DAj=i`Eq91S9z1?oV4{{o z1Bf>56MXf$gLQgwT_}+RI&4k1;{io4UbZUScDz5d-&6>tba#DfoWpeA5f_FdoD=Wj z07*=E8K-&^OA}liNr5=glxF{ZZQlFjsxW|B50mAa(;5?1Gc1%)QKo!#)T;Mn)bLptdw;iPMc>Fl=4mCngIYww!#F4txP4%Nr zKeFUmF|iNThe@8AoOM9d;IjJII&>AQPPgIpkaeCnDuW1=8#bsx5@!urSXtXAEHgei zN)d4X_nM`*4;eP_a;UsMk82lJJ2u9u9u*N0i7@RbNk@`HX-k(iGhDP+F`>_oREnKg4dtj_W5^JItVp4TUAmdk)?#(RYSlB`?Cj@&&E+p&4z%d23!zoB zI*!{@@a9x4u`YJsev$&W-#9I*OVE0N@;n$zq7#Kw4I(GaOq4FF*2+{Pb-|I32kWwI zQw`I**p@9`G&`O%5Bed-L_ckpn1s)vGO$jSDAGunDDvj=E^04N&?*{jxwSr0DOopC zF)g*rZYcP|MKJt z8ZI>fs~Hqz1eCMR#2f~x3Pr+XyqZHSA?V*`x-XSfZ!S!N{Pj9>!oV+Tr6NQI(wBhhF(t#m_%rIE4kheY*>FbQ9_ zF1MBtqvq_~c%+MRa!*mQ>1S=f_mV7(v>ZmOZpU3Ocy}#BD1x)%k!HKZ{D*Wqy^BIf zI+Bf$rWdp^Gj4ci_s!q7pO4gb0J#d-+`+<|)w9~4D38A1>DGz*PY$tlEMR`-^tEf( ze1sk6tkqNTxRS0_n2k4DvTxshJhjOt>U(c(5D5_%m%K!XC9|z&Hza}r^9){Xr7$3YB|vnJ%sB&l^kn54*>S_JWEskb^R?#}@@8hF8+EY`y8)eNGleC9O40NDF4m{bX=wZlgj^BQg}GVQrCj&Crz5WZ5C0;R z@`eq@d22;cu(*J93<65#Yszcz(>s@yIIosA+xC565OD##5P*vRNLn_wsHtJVgn~{g zwbzx;`iFx+3yOjjbjj#XFPcC&H_iI?{?SfRglQLqtu3gG4)$kH8@5glb% zvvEU&-GUUz4Z6Yw3@(FZqq%oHsvE}fL5$?DjXNLy!FqOSYN^0E$J+d|{cBorqlZZa zN9F_xWouA#E5+Q-ALI&r0a9dQBkr0xhm|MKQW8X7H64&~}C{AS_T zCkDT$3}k>i4npn_1s{W|>|zk29f^D=t4(7|8){n}XFuwI_`(+8KI_eC@Ve2k6_xc7 z5Pw4;IIW)c+D$Z3Y zR4qF)2j8x?8O&Yb<>N#DU1T$n<5ad(AEPpUrR=r*GkLvbd_lfdt z_3=ogZ@UlRcT_VjTLo=oncNDx4;ZgoO6@*cz%;ri!{Jr>L%Tf(56Yl&sX%Q*gXL$= zhqoWgmP^d%k@t2QxwLla8y4)DJ>*>*4lkv45;IIyUN5j;$uPCP8`>#2KmDs3RN@KseS2j>A699R zmyTWJUb1Nao}D{Sj=OA;Tumm@1KAE2>lci!>KBSyn5{O24*TYYXPR>X9tzZ zR4y0~D9N&DMX8IbL=~pGO+)4fND)zCC-~Ea^8w@(m(8!P7FYAH&%3%-S4LDsbCSVR zy}eI|nRCcd2etI#&aYvJ4^P@DrJF_A2?hLfN1xtOJq4`?n%^p_h z)p0r6%YTfK%q380vcoJt)(w6(l#z!3M$+ce=$8L}FyDpYn#PZJLD(h3$gWNI+DsYQ zMwiXY->{_C$7qZ<=`EbBVVf+_UC%Ss;{LfcGFf!aFOvjquWWJt{UWn^ZFY@@`AR-s z#&tXf)w1gfyc8J7x3$rbhjWbi1+dZX4b&I^S!#>^8BS_~%dd6t^a{{l^hNI4z8QWp zKYyv%wH`mkTT@3(o1y(SBs%^QexELW?S~G%(Zxu>NenZ;XU`t}R-(f)2SU7N<9jaY z#VMx*mgk>mK?V#d>4%yV%?U;bPs5pN(S)#f!rTp(NjtTWK8eSrr++Nc_abCs&C+Ef zF0=AI=Zrc>ZpG=>y}?Of0|`i!eSe$g=ND7*7P#4vD-!O}zph5-nkYdWDT zT3TIqIs!Cle{Q1%c8I5>IMoCbY%9j(){!8@MQ&I{k~}~l zFQGUEFnbGE7om>mEaLFj@2j*J?TS-o#PoS=-sfJ^Q%uqQsNQ(prdsrV2_0RRyf?Wh zl?GYJw?>zQ~rcY%xlUnbPu}PXrx4o^A zg$DW6hBE36gQMl+7M1TF2)?MI*obTjQQJ*Rpyp4k`32lLN**Sif&yJogOn@!7{gNT_lc} zR5vlX+&W8b;Z;%QfFq~+wRBGiJ@)iu@h#pwbI;XP9+VD+$p(Dqx1Ta|)syt&eYyRl z^FPuDAVUbahq{~HT#~P=_r2G%$WZ0ctq%SfrCS-Kgm|K*D)Nn9DNbTGGPY%eS8onPDOHnmK)oi!0Wz!rG~-&(OgQvBHgzWnEc7AUvxkC&DV1*bS$bKy9koJGhS7h?capn(&%;f33a) zitf{T;ofpg;$}NxvbLDZH!z=iirT0L6%|Ue$Y5b5nsrP9Pc<8AHBo7Mv7p#L-(KXE zWp_vP1qzFclz`+O2cTQh{f9BrQtFM`0E!;LsC&+N5UrR}3NmkapW^-%bx8!N%JINF zg3CjSu8ut6@Xl$Wb_bI+KN*nf`P3>ZFfcHh6J-OW3HoN^tSZ(P0qPAq-lLp8WZo@H zDmS3}M=Yd}B+?q>4N_B!m6rvb9z&%Ug;kh4wz1d3cNHzCzGB~`qNr#(S<`^fyV*jW zs@ln19lN-JxlKl|CRXn3+53pq>$V9+qpIwJ+9V6?os1HrWyd`tsXk_tIE2cf?{oY~ zP=_@@v&=coaUUM;(k(A5?L=tr{IG9D%w3tWUYug3juXS4m01PhulQfA@E$V^O7&xXd zPgUWIs-oFIoiF(kb$V`;1=Uiv;{KP~E_z9h^A1r(Z}>i+T))Uz2(0NCL#21chuf6( z@#q0b5I>UR@BH?LN;eTg^=wX zANl@#jFNe>LA@ltFs;S3BSX{!p(SMbT88eFdfOj>0+d*PhOo}aU|AO5h*dP-;wlfW6UVpT9qjJ~7w9d&b@IeD@_Tlx7> z%L}Qos%8^|8W45%S;fNcf@!%z6#V)W`<=-7jlwf8P&{{cWC`mHF+A{k)9F}-GG z_MFmy*5sN9Wd-x@>a{|#7ZOA3QuLyVKYaLMq1v&EV+|Wbu&$D$1C@Y;P!6T8p-!Cw zmCGvj;lqdSrmPGmo6hYhmc^lRIun13j=%Lczi}J*E~=8Q$v|ro#nxZzZwv0_5b_1~ z=vh!30Z{xf4+U}Coj7m!>DGF|=ns$CuJu&McmzLu_)xz?Xm(Tve4qX7*k;%(deW!H$Q?-d z9}D{~8lVc2rAR9%>XQeM+!x;Yg#GO%iHM+k^J|}J#%<21%vF_|gPcikEUEdYeAfuv+L50CEcc6$nDi`u~alqlb< zEG+Ng<@d|(+so5uyL(dhtSiv<>?WtWNI z0#)GU?c3E#@pfq}ANnkGjw(c$XrU^Ri&9g?ssb*g0SUHpWsLbmjXKT#HIuVKbc;@c zv?GQYg1iQ&wNmTNN8iVJu=qB{mTBg9XBg#FAz9G;`Df4{?;b?y*Cv30jfa0MtP+-p z$>DagJGHK8cYii2kd0B|LBcyz6{WsY%*L{6FR>+%{12xT(5rLPLGgiDCDt6_j_6xC zq`YjoQASjs(Q7imGnH}b^RKdMNNBvYOlgZa_N#tM0r;^>c*I!6p#8`|{ZDuvhdk>r zH`#&7Lx|V0&9p`QVG>k=-g18MDN0+HBTc)-2yaWwXst|ODKk1dvNu4yD;l!uD0%MT z8KfFy{PF~fuy^-2SHuUMPE<{V34!LmOBKFqtoVp>yBQME`wL!sRnM-wdlFg(Z_x=4 z=f;Dwz;hu*o)-#Bp7TQ@qCXrSw>wqY|D(8AdCBvmJn%jNPBxl%JO?}A5iG%QB+~l9 z=Bde!th#v3yFN$e!wwugz#5q;=Y?AR!_S3GmFVWj@67h{NQRvh zd9YbVT>K%z^)AGj^+Hzar(GEz6}1zW6g-5XnCc>|YsjN#n=(b92oVbpkqGOJ24YUc z$4555xIusD>I>wgo{`ccU?)As#;T1fUuvEP3#=#;D*l9JHpuFFRh+sy!(qGFbz6@@ z*!*5MI4NrHmC1L-idhUotZYV#LDF1K_T z97S+V8xlznmRILuL3^B+30^G&ip7qVBP>!K_C_|Y9892FIrbWhJsS#wi6 ztP?YbSIm%QGzAF&U)DZkwP|q0ru}nP0f`9-H{*^%(bX(?D4#amJ~mtw_o|N#ljii7 z$m)|6izmSf!D5dIG9$~31aAn+*QT0~m}Mc;@R)U;hv1Ij)D2ar%5#ql3zUIe*dY$V zg$Q@jMWjz6QjWsPvSNT6Z|`f&I8uMv#XC~3#!x9+{~41*=ka&%-d$^$Sc$;@vcWKw z{;+=Vk*15$!NJRjBM)5u7%Cii0b-%q#?&S2d6$EXNA8Y-S3!5=TQLG&U80T~%ZD$< zyAi6vkL=w{8#Zs<6Vp<+lq~I{k#Bq0*hH}*b9$TO?!;xWfqDG1z%2?wjE%vU9WJ(` z7qa55u5+4OmenN>bVWwRmPbFE&$;?_dLS!|BnpUax<%iLb6W>uRHF`P73ucXjkAcs z*ZVSis+(OTtx>l=)ZAF**#WI&v)Tg{1MFn+sqE2*i&CEUMv*3j*Sc34Cu8e*pRg-P zf+2k!JPo*iW~`^CX7I~S&I!P+w5Qw(H<2O)M_VoyKjk}z%0k|oK%zEf9zB&H6bs6# z%SC=2fFyh`2yQ_e5?VfB(7Z)?s3px&KyIJ{0!hAEEP)I%Sir4DI*WGQsnQtpJ&Ha&v#Mom^ zJ25H4RstyCS%203pcZk7JHs?TW|YttRFC0U)UAx(lkr@A7n$Zq4+wb(25D*{$PFF? zt$)f8Ld1YGLhwTrO-SEF-b~FvSR=$&)W}8JiFX)_)=_GPVfLSFl1qRiXIzcmf35-M zKlC@xJABMcJgJJ6T<_RLG9;uNAf}q_%3ChZQ(kotCB!2LyBEio{H|S?*I&`TqO^b! z0}WgS-KTA2A*F}vjPQJIX60|mwSG(*h}x4Y)_*`jUFG4;ZTx zdRME|pUYbJ^kfHeFsYy_Tt4M0rDnM+6^LoyLu zdH}hc3SAqEzZi#$RcH?zi6{QLwcB>YqW*xEtK|9&T!mG0v(uo76St~EiU*k!iX7Pu zBe@)y??bQ}qTc>$;>B2o^#L3Fo;dGgWIB(vT`n;fBF2F%xCL##J<~~$@Kr}0ja(c~ zdQupKwLflwwOC=B-QaO!J1|dUaBH0-FaX31r{3(Nd=w}rCRds8zHcQ{bc!>3sO=;$ zO$MDHf7s#q z?@N&yop=4E0<~p00=*yTKvWiI_y;Ap|+hdQOL<$%emrU@^uB>s{% zAME}n1CRfC*awrWhAxMMg~9y=e5uBlk34&3N;AwU2P=1t|N5nCP*m;B6geFZA2fW% zmIUm_9+xl_$fOiG!*q*p+eKRrG^N9VWCjlfF{A;87ju8p?|F-%z>R-LzXSLpoWbz* zaSy!ZxEGhg;exT(#_Kt)>$?BIj5yf=-Y=SFLr9cI$w?{A> zDl769i}4$`IDH>zj>FSB;{o+Ks8~7WcGkBu1isGM4n)jK9Qi;*lXbYTyAe+)nX~xILqt_y~yu7>;ohB*;l^{dlJO2cTNNf&8LyoIwi(zj%?91`_JH$0vkVr-H zwk%?R$gas&`((FF}rrU%(Mdp2YifLHkcNq`D&~DyUE&_4C0;?btoiA#{lh>a) zB3Tu!IC4Oit`>>~3X33`X^fNcu+JD?=RsMVCy?%+25eADIcd6gZK~$qB2q~E8XAf z>qkcs6zd^Chrs4XDaz$din4e1g_g^SkCZ(c11y7ZQ|*j z&g&IUL|G*pREWY2AtP#I^Paw^64kHmxI7G@Xzr5@(w0azsFC-5{J1!WBoiv*8&7Xs zl17psHYIHAYfz7f?t*p(IXEj(t46_aN1U7>g!# z+2RA@bMbbQ2jJ>FcTlIeJXFHhY(D%EKKOQ-`oQ=kkNwmkxfmt6X2WUub4`ko$dz5h zvu@I+AXX0kkmqU()mnPHFzwQ3LCucys_TVEUuc*3M4${-mCb^=5u>lVAG4E;Uq$re zvHcMs!mt%cO$(Zn_^!aYo$*k!Zl@tS7pB7#5F4B!4=8?=$`5E~1(vK>CyN|G<`gU` z>=dVAkdlE+28OCC)7q5yozI><>%qct@zpW7Xjd-Z4ANE}JkQ8*$mxgw6CF0WOx*|{ z4m!O)tNb)9bf4~r8f<8Gw7iy^x z$XThPZcH(EnQV4jeFSbr0`z3*YtB)}(FHxv;bp(v-V$`}#GXe9CFE!q4Cz6K+*P-nD4w%e+ z1g?1?ImcRa9q~pUqcquy z3~Y^{qIL9pO~FJSh)NRyPBeg^fAa-}t#xJO^Juj}^UumZ^YviM>~3~+ni}8s0_l!~ zI(nXAA^X8Er>9O2eT`Jl$yRgFnq#ec3i0YLlihjZ+y9o6?$k&OMN}#lN&El5A$XF} z5L!{na1W5|1EB4W= z6vM{IzWUT6=#apq@PJYGfBclJcZ4*t#iTaLf&fO0fNeL)urb|z49Q<_A}i0VyHc#! zc2ety_vp!`q!$dp5|=C~jA)qsabq-A&uEU0ASrGzF~3gBp@q+IWu z-4E6-AW0^fQ2s#mTZtB{NNCf;ulTV7S_VQENOC`oOXw;LTIiM_?jk76z;-IbW9p7s zBID~Ap7f+4zIHbs)K(kLB5{W~4xbitY~Jjg>5fo&mx(b7ey<;p|LL*Sd0xb%M7S3T z{{wOhxffD~!BO+|Z)B#0jv8^|GL^4kSM6i8yTU0A8&!Oiw`S1c%D zP~d7=Ctf_Y5u^X%Xgj8>8@Z4osO__mivSJxJGILNIQU(|(0>Vx)Y8&uK4mA8)*Hw!(f8jPKh`@ZW{iGsuvN zYNM3Gj*(wbpU?uxTQNS#|4eNw!+Od~j{-&TXz_FEQ1%cA20J191P8(2ywTkEkNt0m zXq&1gxcLH^Gg7%Y37pTgTKU^q1j1>0R%v|b^na{YL>`>3(^LHUJn^M-)gNOWnTfAQ ztH{%77Jw1k}puXM;0}rAg#K-2WU}mvU;c}&PqH=P$0#> z)NM>(v9`?Y)Yxw$+6+f~`_u|&jjPc77Sc9YO9u}=UQmNW57Vs+Uio`U-B$ofMRQVs z)!X}2izf4FeGf+f*HMTR4+&V_a!=khiD4gtHG3*hWV0;Aoo5XhU!!9Bd%fATL2A2= z;a5$!t|`&A$wMQha-n7sjKZwvHYt2L5pUD#a^z;sL%?J=A%01V>35F$yM(?!^*NM% zyuI+rh2%)N(b0!1%tqhmj;JMG`B1Oh92-;U#S!%O&Sg~fCJ(vSoWv;xmC8ohA%$Lh zyV2c;_O99|N z<}*7Iz;D%QoDwjb!+3sVGe_mC3p-)9knk8q{of6`tNT-YD{Ix|#M(pS@4SI8$TVg9w7WmGrL)EgYdEWne2{#Gon{(!%ly=6!3lT2%IJCPd#<#?eZ>JbJ zYhtg8xmOdQ^tnh%B##BbMeU0QMk3jWiLFi`7$6O7PGyE=fJ&V0U~c@BMh$1yShX@Z z{YNY@7voQGw6?Yz^KwQ!5qrFg*a1LNOXq%m+g;ux**CjKL`M=WCJ@q-&=KqHqj9j%f)?9olg3@7$wix$7l*G{}P*ph40Cp`b* z@a%lmWZZ5***mLgORg6;q;Yk|9BHnc&zw!cF&H!g*<(F1k#dRh{#7Y`J*9GiR}|lE z-fQw?NNI zc=dh$Gf_tmEma+MhG9ist)BrC#@cd3btgVQOOL(q;GCVD<8Ik-cb2Y+p+D=gXQx{@ z*Az(korlzMs}+K}OY@Pbv`hNFfNH&{$uJ!P%>g zN)T{RDKy(p#~5bxeQ$XU#1-XmYk6n@#f2SxYW0%0u@K4AV;$_rx+;`GqN8apigpFrZubhEBNDdEXe4mtB4x>j8wv^*9cuL|y;yR&-TdSqKLm|kA(UMz6p zXlZLN*P%aCj$V@x^h8SHtDpa*C<#jrMx*7ao6ywmdQCF^_ipG|RBSNsP(53pcp8ZQ zaed!9CbAK-n-WBb`bReYfsk`r({zBiV$ybY?8FGCR}-BU+_CMb_Csv1pn`1-fewQ7 zOC2p7a`em%>{gYQUrneB z1CPz<5~8Qp_IW?CkC`2qbJyfg+U#OJVHsEcnlIsg~}6W~jF7L)uXIu$1|>1 z&ukCaQ}b)LZn1C(U=)ylea7$dYMMtZwOhUCqAn%YCK=5Ofj=}AAsO-w%|m$Ix<9?V zh3bBj-3*$Ct~REl^*`bhF7QUC%9__?dnbR&I(8I=${{|6?~F2cf+Eo0P-d*W~TDr`U*JOK*g)5pBU|J%lD& zmONmO7sb&m_@}+9ZC^4DN$BA#Xyl$auBw`xlEUT~xy{mEuba<+SQ;jOwE|FWf9uJm zu7=G&S#QYxni5H0X^ewg5}TSITR-;^XQPD1I^O2+&6$`OrlBmJ$xV99r(U3K26A{^ z_kn$ne5Qg}B97-RPxFsc?69HPt0Eq|J9V!@1gjYTM3I_I>9zj=$_+Qj<^v<9R>||j z#(5_qu&Cg%7c8$*rPSH}qoboOlahk{GxPCG(3*RS3lD$0+`PiAAP59GDdG#Kayke# z=5*$y(*_Mfm!cq!M5L!RZ-fdam#tE}U(S4zHR=BPx$!7n%R=*y1H0y~8ccjCI3(dW zadB|sP2Yf8x#`>_#Yf1ghB^qirQjoYwcKi~!=SUpS#*tVoMz4$nYpo~?!#9%3s_1hmWl|56||NmXq~Id zvIU*d|A~Uj-pjQz#HOY%^;@y%#8O4{T7*hIk3`8A1$QB>c}%0B45+d^+1mCB^g{9& zHK~x!{OD%~c?_n^#H4Suy6U(3+kf5IH{eJWqx($X%zqNVkr%a{;% zNbLv4DR{4Cm57tO6yfjDGXWtGCk4DBu4566TGwXU~DF2yc{u|rp3RK3y^38R}J zix>zK9Ir``Futx^{aSQ-yraQ+tHN?^=C*_63>LI>b9VdWXo?aunf-8=j#8S*9db+- z@kTipgbpjH#@zlcxT!g`-ujl;gDhbSv@iBJAr{{ZvT>`{VqA9s7~ z6e$|y-*T_c1=aL;tOpo%c&3R=n{fy;^g}=(;2);nwcjzO-D;V)f0v9Z8i<5|6G7k> z-sR_a!{03L?P)~nc<}T3uC3OM`7P)f>Th*x8^5dbNR(Xr^&hWXT4}Uls8&Mj8N>p} z02)z6$Ej^A%11vQEWHW_Q}_9&v+o{wpLg>Ytjw9GLV%1aBJs;f;G~oB9Wj`j(0ps( zH2CHh3(W~Hd%5{o9H}JC&s`4uJ~R4Q^x>B6XlXgx->GMAO}^S)=c>m3?KmliXjzb^ zbW(D|-? z{retic!vXdJ2?o*V-yfE0*5^jZXKpFEDgJZ^|RQ`qds50WV|^}Tf#ToG|U$w{#mhd(%2ho;H%%-QDT35$<%o1m>Ps!LMiv$me;LL zx+mIHD?gAkZ8JD?V^;WDwWmgU*nkUcDK4SVoF9&ky7N@S?U`lM7>GmRq>;zaULad< zVUWznSNk_RC2+B?Ke$001S#nmPP$sQgSZ^w($}p|i2+w03DV1aph=Z9Zn!ZC;!Lr_ z=KT$daPK1F6^^Mvp+j4ReK2y-m80Y2@F39Ey5+(5fS5czJ%bCFY{k)7Actlc0*cLh zKVKkrGZ=WtxgFr3&XC{UUAHyKqECq&LhyX*M}1~ht9e0-L8$P`xBx+Jl2H~NU- zc6OCfd-+(Emqw}fQLF>|VBvgc278+QP#?Egd6!H9Px}{#Zkr-i`my&ikrQq*HWM#b z@R(MM;{=aAZCQQ9ixIvjqmdIVBuuZmUhc+aJd}Lv^$_grSZ}S&%9SgzU%G1(!=R@m zX%%f2D`$_(3?u*olY&BktPI#XqtFmM6d0fb>p40_h(8Z!;t+g9b(rQ^gpMme(($b`Lq621Q2K)KnS9TC8XDFqpp z1J$5~$3C50PdRCz5ohdp1jC0!d{cb=*Ly$5KX5Q)M@s@{K`VfW+Nix@cG_d&+uhai z@q&^PMRu{h>*jvpmFv2#6N9)XF%2t_i+U&d^%&$97~X- zUI+>;uc#m@E9oiV<5S$`Fqq3XFjD2Mt_x=?dXY%oOe~1TyewiI^=2}4QhTP1iy4Nk z4p3xA{$P**ccQuA^ux~Cb2l%d!{717Ac=j){=WSGf^v?xc=LZ_^i#mI-(0ueEGY8a6BU9}E6Os+V5zDTK{;MjUCQYOB%udLF@*zTO#Ik? zq<7=V2mEf(&Lgmn=!NV~T@28fRy&h*Gkg+sHiQBJO**xcd*z!kNi9CDof)VBr$#cGgYY6rM}QYzaxye_i?ceLM!` zxBsEsNaGzK)q=*m&aakg6NwNjZrxpnwbP~{LT15OYx|Ehu3LLRZQbeq)!ZcN9b+NM z9b%R6Kx5Hw9&XT)GueeSda`Qm`pu|aB5oSrl)i<;DtNuzB`bcv;v}5rdDt0W-dCR! z_S=F+@B=FOUqm6f>(g$G$?23Cpr*LlQ0y7yG_vK)ms?yXckDDnF>-a8?ah{B|4%C) zI6QvqVV2);ghGWMwdlog@bklX_oJi?_&rm^6~fl z;TRnyTNl!gpd%2;A@BWC@xezwhKUu;&PM<0V!PySK?UW?`E*&;i!ho2-y#F)GWAT+ zaa)u3OL-voi(arpR|hZst6{sQr^<&X>bI52Nx=B)#4ipy@DAAUc9RIp03msA3e41i zhEM5h4LR5R^7jKL!=>6zxknHtpr-!&C0}dQ7p#xrV`Y~`ewFn^wSiODb*oXzKNeJN zxX!fD^IA1I@?U%0q8xSSjpyGCq%IsUnh{Wi6>4|X5C-H}+gFD5?kfU=G&!xJI}*3$ zU8L|Lw^tCxUSrFBlMEbzxlnDvrq;3+0H?fwu5P;lm(D^m9*c0VN^tmp8v5ZiLof1w z9B0^JE7ot#d?B*wrzy`t1VlXIG-${V|M9EkE?)L~`YCddMQE>Q^TP2luO~>eZA-N< znP&F@;-bVi!T|5LaJ9oP30WLSV8JLTo$l@3d;i@q3kAVk?p@S>G>WWL3yy^gu+gxF zr>2s3V9nBn_D#%{T!fO`f&fVP9J0!z9TXf8D1V-7Kwbq%iabCGX2)*t{8?69NPI$0 z?&?sSCxiJBk#Nsw2RZw@`Ik6rw6#Z%;p$gVc?x5j^T z?NPKX%Ha@7NxT0U2~o0eAM{5I{q$BZIl7;G>kp$Qz%fofj`;TjCBLQ|Nl%QtN+}O@ z)>2~Dk23(AH9B#sCAy0i&hSr75Uy$b{0K!*{=lzt-OYQ{$NTde!Rix9tTV$X725iegCR97t{#eatXNOMz=ezlv8uk?Y zSY{i<$aDD7u-h^~A}mo1YhpJooNGi*!|qQv78*kl(gVil82xU%`Qbp`u@T=U&Aj1! zw^YQ!$cVB4CpCxsjs)b1kc0nl!wYtp^(7qj-d7i=Y_A*>p>mAEvk9M_kX!K6=S zo%Fi9uP26B^hNNwI^s}T(n-`{XqnOqm|unZ4V>dLa2&lRUX!WNy#pHz>71)5^5U@x zc;!x#lfCMVaySA?z56C`@Jtmt2D~^``Rj)uTaZGUoP+_tqAlOKS!FaN7YTxzin$zO=&1Cl~S~%GTWi7jFM3iAyUY8Y3f@^T`CPDE!j!-EMG}NnMqa>viIgW z&I`r&{{8Ofxu56$<9@te{l0bmd_LD_yvKPS=W!h87`6^KEbL0N0+|JAfpF1gvwxo` z#2wFr47n{QU}%g3NPd6@ac9AA2a82hr?GI$E2gxdfe2z%@g@j_*4IO};{oBywL=3j z&%eB)JvZLHxtCild{gpjHcn-lofc*FH#7S8SbT}xI=VEbF$Hs=B2}dVQZ+-qu z58mbaxuK3k!sB-n=3A);X5RReCOV0Pk*o4-`)X7T$kNXj<+Sqor4U4&iQv~#+Pu&! z#aq|imj7g%I4IcjvQ9l(r}gfIcCy0PJIu$^m+pQKh0_h;&dW8Hbgtrb@bgHc3^5du zihYTj2oe|u#6!c60E%ellKTKSSGhA~MLZ=I-K^>vJ9*9{cygb>R!n|<06KUi2{XZK zG|SvCL}<_hQR`5iN=TayKohSBB#N}dr=S20?IPy~Dj=Y4fiP++`$91_Xz48bcK^_V zy+KB4U#AOqc%L1~wB3XY{9p7@=C&XrNZWSa=|2`#^QY zYXu^9dM50*(rWl#91e?|6Mxs2NS&A!7;5YJQ-)ggq(0e4AE=l^-YkvM6FVT7Ug)9(;Xk=liV3S}uO;l))wVsQ}6f>t{3 zSH5A9ezLGMnf{QK)t(#OtA2}lw_T{qs@`JK40o`q5(n%Q zJZf2H^Z<^G#RDLy2;SsGHiVv+L~VdAnNO*q0J+4$pcd*-8X6$gDhtH6f8QmZ4yHLN zl@U9E<}3ksy3Y`&XTez>s4Ri)^R8D{LFF~U> zxx(r)sSjE%PUKkqsQJ1nw9!5QWv|W_2!O~_l3A!8B89C@4m$zOT4tw5A$m-a0vU=7f&fsDliN`WzAWqExvskd_uW3zFw#Em4JTLJ!n zV9nmD`3AB78MV5p?Jd82o5&TbrA}O;r)#R5l~tsMMX#mfJWCI;_WGrRLREpd^{6d> z1pR9VjLFFXxJgqzzLvEU@C&QXd3ypPcS3&(Ez1`mwlOS-q-GZ6Ww5Wv8t)&urw>dn zp?rc$^tP+({F5FPMR9RJJiW1~KsjIl1W7em$FZ{9aVJ$|V4S!d`z8v)kIbsXlyi;L zVVbxfM8m3{wnEy_ET>Aj%5expixC z!dlW7zZqBLqDheO-sI-guRibQ>@ zRrL#i$h_YtB))7NObkG>-bQ^{ZkP;gwfqcuPGXQ_ zSOu0O>``kJh1AB~;@Dl7MDm5@yE$aj4#E%^D(NIwHt3;1Rt_7?bE)c$jkhkgM;QhU zcQP#-;uQV^Z}Gtz)+pciFW%>#I&gnHKN0sf{0|rKV*kMstnV)gFGp-M!$qf zqgWPRW7)Y+4udtoEC|*S9L&Y2pf59D9R6)IZKo*{zy~s*VePqdBeZ4qxn~N2Z)@*m6-c|6eC_?FC5HK@VMbNwfWA?n@9d}n^q+q z<&a(f$u#gVYhRK@1=vr&KP9Ncp@8}a9Qwy2{`t}F{GW@aV||r;M-S2->9XgabwG{x zpWllO9+(n6JC=_cVRoq6{4ibbNm(Kb31LwZQy+v3vj;p>xEe$Njp52ax;HS2kKmmQ z8x=&lNc=Di0+Lm}JK%LO_?s-iF~XHh8(6_K0gfR4VPr51bW||AhJC-g-|7OPW1ELu zx`N_uX=kr}N{}fIKJICYhPs8pB=SS!FVAsFaOxOlx%c?7+Jki_oWcFM25jaQO zQ*`P5!LatFbzR8dszvBrN4FUE3z=b_df5;ey;-;#!elE?a|SPf`{S5 zD{gqa9K?qQW~o(MDU3nySmy2ZI{}Y|f-LqB#EdY0BX7upZTtc{9_rJJH8_egqGsmH( zCJz(r27iGsNN&I?RfBmj9 zWA0T>KK;Qp5Q(iKk^}?;Pl`+Ta9i#KoJ&|l)-&nZHQyo*z#o8Ya!^|2kLu}L@$j2z z=6+H%x|8iN$_Q5*mtM^*QB1la1m6G}^cQEXnLM3m@nY&r@QF58lz1gGV0v1m^p_b6)V6m?14dj{({2(v3 zdF;r`;ANOaNJTHIoNMGO9ll5`P{l+i?x|f*7v#T;EY=D)`x@Kgk(3o8^!RvM1Z|o? z{L3Ya2n65D@*@yU_}E0ea`FB93WAiK{orjQ*^j~KG3^2fN7WG2kc|jlPVj=Fuu~p@ z=}0kl0`BQ#C>GiT+2H4&YYy}4degJKx&IGq=Hel6ta!XZ_NruV+& zIu{U}ZwLpg`s2PEm=+@3qJ7_jBhA~#M-&Xqt$pxv(*~uBLOyCOgf3xwndBQn6>@lH zU!$xSbb&)^$A6%5sh_=S+b~?9(VKKyxMvh2ApXdSG^=U`t(zoRV3j zNJDnJddMGO?x$PN4Q(cTSRU>QTy$o$n@skpPw|60-+*t$Bo~zJA>SFhaL=w?D=|Jm zJ0nkLqRpJF;)0{JB=};fEgC?z6jAPl!!@5|UdxVy22St<-XklrP8xQ_{TSdd6S0hE!#6E4+iYq4jY!)T~sgH>n|=$C;Zs zZL8$yr?Yomm0tIHywvoY_S3hiN*vdFGqNJ%;Y40e4vt-q7rm8oxiWqd=jdhQmF4pG z@+#b(p}IWzc2`$|NAQ#h`;6yY{=2QpveC~3?Sbsd&wMMe*<7x{VFv#f7^1tLIdjIQ z-|^G}cxthyy*=Bq6;l-@BS?Xm1P9X{sBR=GNr5IlsHk?H?Mp;sq%c zKY7M*FWjJtm(tJ~GH%Mg9BF~nh7*&oB|e^>;1F^0C}cLSy)A#wbid0&igVdVUaZ;& zZ4yCGyLRqWd*zg^A9Hz@r3%uT+PZ?npPxN$`FZ%-Ys0Q`)zIo9&>QY=vJ3y5TQ*C| z*!bmg+50}l#YZ$m|iVXDyPBC+Q-a0Z~ zB6Xs~O-f0a@ol0t1@j&Z*Ie`fKw{|!HUjaNh zxh?OPPBnnP4u`srVywZ~(W77NY1@enP08E)6pk5ZS{x6T-?O3}SqD_wp3_{kcX~PU z%?>R2D%-c8@9yr-0=7%;2`I_jW(oa?*N2OA zjva#5ttSbZK{|Wa!@~m*zZsest`ZbfV!k#m*$%mR;@pF#pgaMnkA9$8poOK7$%E%t z%d`bq$1^I*jAXWDb#;M|$Ns7{DtO&pz=&$LuJ?3MM9w*8%ouO!+^80ivW1=Qr|R@X zvs(H2KYFyNCt?2;1%E3u^wrt-=FOXllP711_ifp^{yv$za$2Nf;EVSDJ+t#@T_Il# zt7IXkJ#CT23#{?{9tm&X;;ObtW?1L?ZJU~R?HI_w zTYtD8kfu2!C&ml;(X20CY7vcFP1|ou=X)kND1!2{UDNAm!fw#9Zh?l720Jy=_u^)y zj!IzTZ0NYZucK4;zR01HWp7(rndaEER>GBrbIteT?|F^8fviA4b6NVKN3!hMyh-Xy zX+o;i9XwaO3nquapfXXo0iqWIuQ-GP(o@CSA0=ryL1&3jjOGCfA7@NVP_?N2CiXc{ zQ=F)+Snj|aql1AQ)-{*~hMq26aRSk_l}^rT^78@;+uhM*RTmTTU_<#XGwFR<53+r! z@&S$F0!>o)F7^ZEb|Q$5G5wfYc7DX9gPJ4@;?7?KL!8PCix6I@KvJjA^| z-IT-n{hsOOKO45xcdM(VHJ0-5>`d76H2gJr(IGBi7RX$on|ow&WX$>5)L;-#JeS

    73&pYP($KSk@6yQ~}dOD0w5PG?QiCbHiVJ0v9|@?ybA!;~)W zs}gTX5{s}DFND9mQNHK<3qbzj3AaH=W76)Z>|5uFh{)Yrqlsq0+M_n3>BCAMM@2Vg zDoH}Fl;0KEur*+lzWisd_yW)utY1sBpNgArY@dtHnue4P`N$W$wnc>TzfLUKtlcYc zIqYB);+fx~#;B+-9-s{b4Nb#`Eds;PuU}omA5mRDWW5ZqJ`AJ|A-A=%G2-}!coOS@ zm_j+^tIy+`#Zo6q837te1mBt(WuEk|SzVW-OJzoV{W5;^6{w)5f`O16w7jcrITOH< z&@+kc?deefTLdXnbtWz~9k|MV+b~eB8_$X_81?L8Rk^#MhJ3GxRx9zSW4_*~@a>oe`3L@%hagx;q>5TSJ3O%&x5v9#Q(90EmfhN!wW+ls7H`s)Xw{ctUS$99>a<){Y}`UYbI0LqC+=S2Px1Oi9n<`Rj&}vd zrqY3sj|p?u^Yfb5MLnV~9DjeBz8}yQuwbN|1C0cEV=RH&PJNq$r|B}E3CYG+%mme^ zRPi$-$~MR7E0^ATPX(QZ8`WN@_u(ulr|(H9c$EuXWrnBXsxQ!EmhJLhEn{QXK>O6) z*Qac1%4%h0l`+0v>bGZ`H|BVqBGNm=xWe(;<09h-dVZ~+4M($KC={w~dBk39aJ?>w zxGDXDe8dvE{^R*VMPbBK?ni8!RY@$maPRZ?Bg3w_Z3vg@nt8ImNXNWS5%TyB!$a&^ z_e1*|n9z=CQXub#4{NbGB`%?D?nq&Z^3~!(+~rkOiA_yS;}a6XK=;NiB0@JY zF=15Y!UnFtjF~L;l`Acy`TC`xJZ?-Z{s{eOD!8?iTM?t)h4>5t+;wvVk$Jk}V45$| zV%_&Z!))iSaj|%|EZ!CMZ8gdo^K9`I;~O2HQ`uO&G!?oI-qD_OrnCRz<3&>Ensky@ z5UM$%+;x9|od95N#I%DeP1HUUhxvX1Pw5idz%eK2FHAY_q2j{#?lPK=rm2*lkkxmh z6n-@EH#_Hbo-|0Gxlv;Sukp|JboBH!wb?p2_&7YtFc)%)k`_jxGZ5`z7UQil;f=gBYm{fD3@vEKdF7^qt)rio+s1kc!40Yt_~mL1wH&H;iy|-xr@s|MP*cb9 zQTBv}YaB+rcf!o76~GR5bt{(OIeAkBB>YO7rmXfg$_SR{h9cugiUGYK_%{i%(bd(?1}G zd?GpUL$LjmnqQE%?QPt6>Df4oj@QcDzyQkyx$5T!+}-Ioo)3a%n|o5yqO#r8I}vz+ ziIado%}h;cv-R>b?Qt|H#FZ{H(O@!D$~WMGLLt<$+kklh_TI~ntjw>P4sPC}PILF= zY~+87b7XyZmZ1rzOqnxr)*!#a95?1z-lHOr3#&NTc z@LtQ)%Fi>0a_SQMy(dU!bA|s=*I?mx4+-aQNnu<*#Tp_EJCF{$qoLfoAOQKlbwq=s ZUMpF-skolt3m%mL4^_03ixn+H{|S^~3*G<# diff --git a/public/images/api/qiskit/dev/release_notes-4.png b/public/images/api/qiskit/dev/release_notes-4.png new file mode 100644 index 0000000000000000000000000000000000000000..4f273eeed4a5c70f76a8bc07e2c5c9bcb03241ca GIT binary patch literal 7530 zcmd^^cTiJZyY{1~2s{YbP^wY{L4pMWq7YG#CPg8XK)?n8B8ebPs)CAw0wRhu=>j1n z^iBdQ7J5x2bm=98UIK(~@x0%>^UZh8oO#d8``0;{$z*0{WoPfT?)$f{>)NkOjC6Rp zg}5OQ2(O;5)-4ER7Y4jf?cWEEq(8~82Ok&RwJqIEaSrZYciikDhIiZ_KESy@aJqZK z)86fo6ApU;stQ#)bHdTx{ox}uMMal?4uIm^(2C;Hk{;kBTn}}v9zh^~8ST7x1$w=f zgg``SdRm%h-U*C8Uw5<7>h1X!sdvw6M!tBQx;i4ErG5J3?jWHI#QtMa-gEqyxr2(u z8u%`|n5HeHbp_Q0m7r3oZZ)YHU9xf~Ocbt`eM=1zJmEMhAt-ZB<-|!Y!FMMgv485H zkb0_jJ~mdS$_|rHz0X9iuwQhqH-19HH;#w(Fg$r6{H;NoCM8QTGeGqd$K9 zo$6Bd33@ z(h%7*uy;>#i6>#NP=zMs|C!KMH1DyoD@NHROpR1UvIbtVF4I0=H!-c}^w3nZkei{! z@~prR^I#kIeoPJI$b0nC_YKaaOci!+gx3*N9)owjPf2~**-)fQ=j2I0Z>;=&%!wL* zc9($RR@YH`ru<6Q7FF~)y&}z|g&db_G1gCbYT=0;wS8=ISc{&TgQ z^dhHsMhU8Ij+f$_J_|@*cO3cowxEYm+)!9hu#^ek(!-WoPXYx1Ws1k)1M}p{PKc z66+B1B3ndwgQC#&g+^XtdB%Skb#tl2x8%Li0#j~4sEW>ufN_NxZCrRR~Y6v^E-d4yD-zC zG>4zIz59T692G7rYjgej6uu3vxQ_UO?OQPJG=bg4eqAEL$6l&uwO zf7WCsYrQ3K_J^F}><_yK9YdxvMeG;iRBOQsmZ8Ec@zm4#)mtW3{_o!-Sc?lJYnP2c zTXwNntlE{@S~A>NUO}NNXfIDu;C6uCtx{}XbaZt3w{Kcta$vs$8a^l>OR2K&hE)YA(MH1J_fT9)wI4{w6=xl0^FR=dJ>(q6n5HeOgXV zpNoqts*z_J+zB3(X2tj?-_B}ZuRga11$}+}_DUw%+IKG*H$a|hO$qj7&_~Ced%|-s zAp=>o2+yM>ERE(-&&uV^#TI!P8PJ+1^^J{beO?2Md0{_C$1Esib3v^E)Hn21Sm^kl zMmo>=^XCCvvdYTJ_R)G6D|8Ljn1+m^A|(auk{bvFBJS*+AX~qA?T8kB8)(eJ;-We+ zx1gYXxMZAO=|#el*T>Wv_8kz(QpQlTva)phDm>oR-E9NKR^-wH;}yI7I}PdPhJ;l+ zp)KsMh!jCBGPsdzl}aOaN#oS@^D9iaFkC+YbeEE)j%mb&kgq3ml=;I6-}icY z?E49N9E&C1GBusf&B5bud3t!YrdQ2~KO)DrYJR&57cOCwIT3sE*BM4pc4$RNb z7o)88FIRZdzu<5zJ4 z=EqB^<%pNg3yT_;eY8Zk=Z(Tv{E0i?laFtc1iM!CPFLwLBF4kl$|4!02%LN0I=IK5 zy~N*j3cjL3?XCHqtR<)F6*?v=eTNgEQw`~3>w<@NDtT*EF|h4}g7s1sm|0p{X7b$s6(tS2`$L5nlSo8WPW_Te z>Xau{rCvZcui@{LDp*rF(t5rtdsa|xG;OcW73=HN4Z(*(s^L`>zJaZ7Tweu3#wfwW z((>bM^=khq_0p7NERC3W%J>tZwbkT(Ow4pz1oZOJYK5W3isyIl-8&*8LTHLtp;-m2 z&E08AxM z>h6g@fBuZvlzhYVE9d(YqPW_XT{jZt4bva*Uzuef8eSmw}I zXPHYqAB1{83luG~S#Tr|No_QIL4a3vZffG(}&25ICNh6oCJv?n||zevFKa zJQ~9&d)ehG05A8>&4VyiyHS#fhMwzQpn?T9!Rb5%ZhV^k4WTv$G+{ zB>ANtkvE?xXn>k-tS~T&m#=G?C3SZtr0C<-eRHh@Wx>69OthY?X0xX2o0__IijTd) z#PpWAdQ|w8xb#p*0(6yTE7&OdH;weEfWf%gY7Kvu_mYTl5b_oy(lVx@>yI(!^B|zg z16ce~1!TH**wHR4vhOOE_t@DhnwnkAS8Z)=p>N)Fg^ONtAAN73k0;MdNl09+_E}!= z=w9vxkSmTLmHpw)$jCS?DR~V;BO=`0i%uCOSYG;$#Ltqp7a9~j2K-mo(|Tb}Gfnvg zNCmfYBswUS9}^jM$a?6DBL_J3sce?kw|7u}<6tCSEVwV_8fT)a>(w9OqB*?G60oMy z;8p+Y*G)G!x5QDt%X3dY1+bi?Po0tj@Hf_2PyY<+Z*cH79N|M<_YVX>E*}0SywHtK z`h_jc@%0+$zuji0$mhJ-Ncj`~>J4!*q@lv2H4#3QF*<#qq<&@lkr~cox_9j?9JkYO z%IId12#4=GBm%|tZuZ6vW8)YAN&6VoSZ)-D(49Vg043=z%5euO!Ai|-JeZs={Bs^bpUXtGNHD$YmCs<4U@fCHmN|V` zqlvbCvjomR94za5U%q}-wy!@N7$cBZR`Xl`vvCr%w5KmUXYk4!nE*B2ubj5ts`s1n z$YPRqB$dldzgJwITicwRK80Fq$L{d%NzQA%o$K!!O%!iki~JdP$G?29jN)&5x8W0& z=5V-v%1Jf_8Z;(Jcnaw{cmBq-U_{%s?Z=41(sRSJY~<>ATWIKQbFB`byfd~F7l ziks8hUX6QO3R=9b`Kh@0t$V6(ugyJKb2wHcLXx=s#5x4^**fG+2ii`w4YR#=y~j&% zaxqZ6>y;@~FDkbh!DZpq7Ky2t=+E~*5{MYI)zw<$r#{gnP7h?P9MD4BmP3twu0<_% zg>r?ynfIIJ{TPDfuQ3_#Um0j6L^xXi(`qEQRJ_5|i+ss#5-zs9JL8;qIy~#&#CT&A6C1XwTnF$FZZ;oHM z4$MtxM8vAsE3u7v!5;S>>Kk4n4{GZ(d+PGUaHxso_D{VgpIK9sijzH~pw^4jJ~IwS z47HiE<^ReJE!V6{2XZ4jJ6m5@x0SU#eMC$Qsu%aSzMEChyZ&5xcL$BrzPisW z&Sz4*oR+R_69hZkyY&j(xQ(2bjJLBx>o1TM4&;XCtwge<+VnE=aMB_s`z-^>qMRgtN1A zwFl_;`sQY8vSzSzjK|FHn-?4!O*A#1ve$mVVNQ0?7y~d^tdu!}f3Om^In*XOwHDzO zw?4zNA?hC)+4J2!_Y`tz3~S{+pY5O!W$SY<23rN|JL|Ay* zbwgA#suQ02cq?W{IplEBXx9Dk#cBr^9J9YV6nB-OYTS#>-}@(n zQ;|@K^T-Z#Q;gIbL-MuNrUYp{A+`Hi_4)>Ww}Lw+%_79q{R&895`^j#FqnC5Z7sd( z@uS4i5I%7#@Fvo+-FBj4A_TIi#3pK=vl&7cTiRKpr@2+~KG%-VFEno@=)c~deG~|y z2SO5zGJh~GwV+Py{YmqwtE>A}{@@j*;Vjiuk=d47%7>~-sY^ZH5sW?5%FnI0tO2hBdb8g*auuS^XtqnP z^4*L$7SET1ArEJu72`aoeM;hGz6+#f>0Sunw7aeJGUoRKm;$m$7c9S=ynF}Hqe^~j z4;lT{)*So(GBM%b?sANkzbm=CwEfoy>#h_(jj#;0Z%KxgwlTs7JLg2u)ZDD}bghdQ zFX|f^5eqlLoZ<-tGhl&xv86^y8VX@`sd;&4;RxhFL+}e&1rh9M8iYOLK1=MUp^oCI zcGYX;;iB8*<_e>?cj8vz!OMdvi}h@^qElZgj@YBo2KYc%*X{!QIG78P(K0kNv|||$ zh^mczow|*me8-w*Um9Mba)uOPnCGm{wAYk1$DJ*R`EoUQ3nhl+y3-db#4`<)pz~B` zHd%4M%k|2$IkTcYv;q5?kO^HE?T$?2m>vc-@6Ojv6gT9nz`v3LJ>{(QlZE&E8)BrhNgl%EKF&{jAMXVj&8_7azOxiq>*Z(Q zXtR7|!o{87X7`vd26Cv4clUoQ%_@#z^p=~RK7BegH1yW}`{~~!#7R|Em$kLD9NW|N z*igPFDf=;s^t?O4FL;GNtNX4vuFQ1Dso*{VIiuvzcnqj?c@2&J0coF^9p~+0tpY29 zx-ZAGau$;#>`1`h>$Q*kde>Fyh0{APN7%LJXfvVu zK6`T=u#MWDVSounMgiPMM@F7_mA9|eFTu)J4_N<$hYlSP6r>IMRQ5qbzNRoK+qQsP zt>C)MfcyUV@z{V6~ZXqSd$n>c^4^@$!D1fyznTD$L1aqbbFnmbHXvxv; zZ&O!tPb-S0qxG2GkTCo;O{a5SoT)Tj&f5*V>z{a&OHf{cw{3A67_yYpg9XtF+}Iht z_STcv5a!4~?}Pv}e3mAL-uWvF-eK$owkT4{>dXh9Y4coU25``HXe6j}$JyTU;_2bx zVP$Nus{h(hh}iRDMU-IQP0}eFJKW>##??&|-iJ<-{}FFQM!zG0Qc+NF3j|Lr;Pxil z$RhthRk6pX$}7%eG@s|3oH@9Vmk#QsCtY1#-JsTgiWw;`vhc_HBtn+h<01!!vqIpu zq+WXoqvt+`S&5CjqGRc+35@>d8?mVw1~I^?YXAE6%S|m2S>>HS<5>y98e!h);};xc zf$TQ@d}H3x&OE1BPn;%~ds3{_#l;+>TNBv%j0w~U$-g%@r+UTpwdD1iZ()Jaha*AR zSpio8!m}dhE;)M#2j{i9A!PpD=VOhrXz3=<$SaNc5MVeILN@0@I*B88iqh>Ksl%JIxghSx}gVs=p zxVeMFXBf6O3z%9~b_I{`*@l5Cj?Kuld7`a=I9adUxAS+6_{c_I0) zB+r8fzQdXi-m^&VRdfQdsS2Kz8IG z`toJ#XT$hSR2&WD@UKg80~#PAX~4oaG8(}y)M{bpKl%e-6_&T}b`@wo+4JWMnhSpZ z)CDBk$d+IZ_cZNVGs|em5VS?51WDE{Q-RvGXAEcB`Q)zTr(tB8KDuQRsDt}TyMa}E z|NecKl{peA7vD6Nn92b`Qz3qG-<-R?<-^S$Mxy5riHM|k=EEN-Wo1l-O@Yl^PF6Mx zRRT=rGIM}Zx4e)0O9e03<2olhGJ&W~$oD2XR7W-+q9)rL+|*MnRnBqWqP zXDpi%FIi+7Cs7OR8_bYMJcwbuQ|L8UEK4=v>%WW-i-{2lgflz-A8c*(0{bvZ!|tiF zQP$I`?!JIpShbI8wCV__mE<3dyfkQbuz6^l51gUB3z~&ka_|VjtW2HU0qIL|6j2yN&=O8BW(sk#V zh!-klv*FeuhdRek5ERdC92k?m=kZzNC#!QH0}_>fl7rNau&}X3TWtrZD|^?x55UWw z6`*REgT#9;&rw+o4O>P}sfC$Y^gcc@f}pK;O4lmGv$B|NmvmZHR#(Nw%O!`&H}?$K z(P!sWa;|wVilh`q-5*!=* z;%Wlqo$j&OtCSoN8L^g0fhb&}j3)13dtGcX-%cCM&(G5$pG`pgg0cMKK4Y=y=ue-B-Gyij;JybHDBXw`a>^b``z5bD z3A?AXe+q=4tuCc~pF!1tkYQ)KcKV9ExnRKPF4UQ(kyfYJKzZ4+dgMmO#M>md)%DtT zvCr{c8J;Ly*~yx6txJt4+gr?KI)>x~@_?P61Amk0)baVTe;`=@i5@1m@&l8=AfdBB z-MRc$83@Q+g$1PgGDY+(IsO5!r+sM$Ady<&QJKI${p=V?#2IS$@{9~Mj5+YX+4 OLiDtaw1`)42mK#g$6@XO literal 0 HcmV?d00001 diff --git a/public/images/api/qiskit/dev/release_notes-5.png b/public/images/api/qiskit/dev/release_notes-5.png new file mode 100644 index 0000000000000000000000000000000000000000..67243561a6c014010ae5d293ac96ddf9f735dfe5 GIT binary patch literal 7069 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 ZUMpF-skolt3m%mL4^_03ixn+H{|S^~3*G<# literal 0 HcmV?d00001 diff --git a/public/images/api/qiskit/dev/transpiler-16.png b/public/images/api/qiskit/dev/transpiler-16.png index f456e76897a5625ca5f6947351a223d1bb376abe..aa89e5c7538eeba29a1a9d1d9b94c38c0809f874 100644 GIT binary patch literal 24800 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 literal 24996 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 diff --git a/public/images/api/qiskit/dev/transpiler-17.png b/public/images/api/qiskit/dev/transpiler-17.png index ca96b6a807430f1808661228399458eecbd7d5f6..9ff832547f09cca7698b7af8e79b2da567cb6e82 100644 GIT binary patch literal 19005 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 G@;?9o^Q*A{ literal 18958 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 diff --git a/scripts/api-html-artifacts.json b/scripts/api-html-artifacts.json index 2a288053063..8c067ef5701 100644 --- a/scripts/api-html-artifacts.json +++ b/scripts/api-html-artifacts.json @@ -1,6 +1,6 @@ { "qiskit": { - "dev": "https://ibm.box.com/shared/static/gtaceb0qjssbl3gl0h3idi9fjjdv0x9e.zip", + "dev": "https://ibm.box.com/shared/static/zdi3u1vtyb6zwlzzeiket79mjpr7o3cs.zip", "1.0": "https://ibm.box.com/shared/static/9mgo99x54z3rpo8irs23olqsov3uo1ly.zip", "0.46": "https://ibm.box.com/shared/static/74ppfh7b3rx73fntmk9p8pw4asf6pp4a.zip", "0.45": "https://ibm.box.com/shared/static/e2rwbrztml4dg6lkk1w3e0kmevkw9w7s.zip", diff --git a/scripts/commands/checkInternalLinks.ts b/scripts/commands/checkInternalLinks.ts index 746eb1509b3..e6745a9c36c 100644 --- a/scripts/commands/checkInternalLinks.ts +++ b/scripts/commands/checkInternalLinks.ts @@ -114,6 +114,7 @@ const QISKIT_GLOBS_TO_LOAD = [ "docs/build/circuit-construction.ipynb", "docs/build/pulse.ipynb", "docs/start/install.mdx", + "docs/start/configure-qiskit-local.mdx", "docs/api/qiskit/release-notes/0.44.mdx", "docs/api/qiskit/release-notes/index.mdx", "docs/api/qiskit-ibm-provider/index.mdx", diff --git a/scripts/lib/links/ignores.ts b/scripts/lib/links/ignores.ts index eedd272fd83..99aaa1007a3 100644 --- a/scripts/lib/links/ignores.ts +++ b/scripts/lib/links/ignores.ts @@ -61,7 +61,18 @@ export const ALWAYS_IGNORED_URLS = new Set([ // A mapping of files to lists of links that will not be searched. type FilesToIgnores = { [id: string]: string[] }; -const _QPY_IGNORES = ["#f1", "#f2", "#f3", "#id2", "#id4", "#id6", "#id8"]; +const _QPY_IGNORES = [ + "#f1", + "#f2", + "#f3", + "#id2", + "#id3", + "#id4", + "#id5", + "#id6", + "#id7", + "#id8", +]; const _RUNTIME_OBJECT_INV = Object.fromEntries( [

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 literal 18989 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 literal 16294 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 XBIj`A*zHe*G)YTcK9?eS{jdK5<7D$= diff --git a/public/images/api/qiskit/dev/pulse-6.png b/public/images/api/qiskit/dev/pulse-6.png index 099fc16955902514114fbfcc65fcf92a2b6ef2db..7eba75a338f3a23c2d5a980273bc80124229db2e 100644 GIT binary patch literal 11363 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%0AgR$-GbN$y5*)2Rz&dan z*8ccGoM+-50I+JbqeY@VCeI|PK<|7Mw;ug5JQAsMY;5mNfb*;AwJ?#MTLC5bUc3Oz zq})uD*jn~u$N_aD7mAo>z7^AC^UGsMPJX^j%tb86ydiC?j9XZICQXuk0$E9_?@)7N z)OigO5)xtQ&Q9~oFc}0aWocVaDPIERD*VL@TsZs``Or5oGi|}Z(U$cPf#C&cu(s+U zh8u2fWT$MYhTLNEUMn62HtMGC zSYAu(u1sAVN|+k#s;R*?o||v$ZON8dxOZ)*r{lX{n6<0VbubUOA8eZhT=^PtG|wd@ zs%Ofosj-OI?~#H_wSOdvP~xk~uRjcb(!x+Fw*$V+$v-4EBVe(j-OZT4*r+n82R~j# zPput4BKB12fwW#)%KGoDtBe}XA2v%8ST5j6BL2l@g~L;5nzEN0Igd(~>N z(ypDCwDq6!O)WC*AWFZ!8cGqegg|6-&6m#+Y}h!(}+MACVVs2JcAlK$cE zfSE7PBhMiV5Sx>*0?c4942AwldXk7j%L-akyUzdzw0!tmd#0WCnb0mc}BwZ34; zsp{>e28R$BNuv4<+KA?WPXi?t55^Z1BZAs$2;>{$QCuvPq4wTY4;Yb1VQ1CnkZafD zMa}@I_61=U+^$Dv_QgKSN?EW9jEs-tK=*WXbktuOu10%dV+;U#PzjSC4}50VF1!HS zhuVKH-1~eQ24Oo+*+AR59$pljg9x2dP~ZbrbilAd5b1H_<=`a+CG3Q#s3`a<^#MeH ziWsUW0ls)Bd9}5*$3UFO(5sXXupHE(?qc$Bezn>J1rJ)aDL6JD9aSJ%QO|Sw%|w9) zAaR0F&lYNc2Ald3S!b4ZvN=n*laX+}-%M|$x3X{>-U@G8cWWoK0zCa+h3hq^Ob>hxzP>?6A z=X)<7*>*wKMCUei!j^3Q0d|2Y3*Cr`G%y+H$>M{>QV+vk9uLrnsE`Yb!&;O3V{!(AheEISjSiKY+O?W~= zC{PK>V0qMpF%&fzdJMhfX1SV*0Y3>D^5xlaqSSnl1y#zOp8y>}M8%v!(FUEyJ2EnI zx+^mV{A)K0vMMVpb6_3-M*G}px^jPj{IZ6I$sh^?Bp^Tx;mKutH@23?usve=Oq7$H z;MyFB!fvw0ci@&}A$e7LC%(s^c1?I?qcTds@C!aFQ-fPAEg#IlSd!q}kyE;+pn#zc zk#pS|@l$D zDzq@;cSaBhegbf0fK%wIQXjY@AQo^nG&DHoA;#pvi?sw`QppTh7(eyQIy?qf#LmU#?-ITx}cHS*&u+2;G`NxUqN{RdmaE?8+9{+DOk?gS!B)G zE#Rl8t{5;h86c!54O#9rs|nbH$_H;1q`*($qy&{V*Vm7S^YMpfWY{kb61%v#fYJ06 zka528@pQn4^1=xKTRd4h0N{ZXN&xUKF^2hTmp+3v_3=i`xKOzJ82Q$Cxgy*~^RaH+ymg6JEPOGf&ZDR0&MwV4nRDd<+#USuI zweY$C==Z!0F}uQK`pyaBu3H!gNz^5dI{D28OHdm$+nMmyc%pH;{GF{WFd&l)2nbAf zXEOlDqf~woOw{z^Qh?E6szQ;n0Z?mBPbpSJSL>=TV-$FSSqEdX#q)%?4RG&A*(hRv^qdn(MdBoQEF33T!RpKh{VGdYxq^`beVqwjc<=)7I}B^$7si|E0*X!uk_8t5#-$A+6iQGH3qvKJ d9_=As>;Ba|x!kZ=c-;$8lvS4bD5d}G{{iGZmAU`` diff --git a/public/images/api/qiskit/dev/qiskit-circuit-ControlledGate-2.png b/public/images/api/qiskit/dev/qiskit-circuit-ControlledGate-2.png index 61bbccd0c066d3e23cb9cdbdd996dc1f79ffb9af..70bab4e2c93799f4bf15e0d49ba1e521f3ad13f6 100644 GIT binary patch literal 7240 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 eKm9i71Wx)kF#&B?dG*B=A literal 7178 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 SsKB`#$mo`-Ud2s^=l=_1DbXMR diff --git a/public/images/api/qiskit/dev/qiskit-circuit-library-PermutationGate-2.png b/public/images/api/qiskit/dev/qiskit-circuit-library-PermutationGate-2.png index 85e09b265841683eb49c8dd6b01c09734581fc64..8d0e756cbfae44b686dbac0067ea74fa376c01ee 100644 GIT binary patch literal 16100 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 literal 12189 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 diff --git a/public/images/api/qiskit/dev/qiskit-circuit-library-QuantumVolume-2.png b/public/images/api/qiskit/dev/qiskit-circuit-library-QuantumVolume-2.png index ae63ebc1671be4a8f7701ce291dcd5102e8c734b..009e6b213b9113de5959d77d40a9741734e5ec1e 100644 GIT binary patch literal 20781 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 Uj|=v1L%NU@a4485@;`m)U)i^bLI3~& literal 19385 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π#&j5dRch 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 )w6Q5sH6Ns*U|tJFtL=kV!&6${9! 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�)B!i$LITjg8K$KME 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 literal 15891 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 diff --git a/public/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-2.png b/public/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-2.png index a2c04afa36ac5865b27b79542c407e2f57cba53f..55543b29d654a767053d155adee2f4a61e01d457 100644 GIT binary patch literal 8026 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 diff --git a/public/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-3.png b/public/images/api/qiskit/dev/qiskit-visualization-timeline_drawer-3.png index 7985acceb0c7172a5dd5bf40c9ee5cb2f4425ba5..60bea5c5674ae88b71d5beab125f1a25699e82a1 100644 GIT binary patch literal 26833 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 Bkk$YI literal 26333 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 diff --git a/public/images/api/qiskit/dev/release_notes-1.png b/public/images/api/qiskit/dev/release_notes-1.png index 0e1fe4cafc2c2e5c52c2002d136b430631f34900..e95e6ce2a5374ec15a4df98cc15a5ecfef4632a4 100644 GIT binary patch literal 13722 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 literal 8695 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 TDe?u1{s?LDCt}5qpT77nOSyt` literal 7530 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 OLiDtaw1`)42mK#g$6@XO diff --git a/public/images/api/qiskit/dev/release_notes-3.png b/public/images/api/qiskit/dev/release_notes-3.png index 67243561a6c014010ae5d293ac96ddf9f735dfe5..0e1fe4cafc2c2e5c52c2002d136b430631f34900 100644 GIT binary patch literal 8695 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