Struct qoqo::noise_models::DecoherenceOnGateModelWrapper
source · pub struct DecoherenceOnGateModelWrapper { /* private fields */ }
Expand description
Error model for noise that is only present on gate executions.
Adds additional noise when specific gates (identified by hqslang name and qubits acted on) are executed. The noise is given in the form of a struqture.spins.PlusMinusLindbladNoiseOperator the same way it is for the ContinuousDecoherence model.
Example:
from qoqo.noise_models import DecoherenceOnGateModel
from struqture_py.spins import (PlusMinusLindbladNoiseOperator, PlusMinusProduct)
noise_model = DecoherenceOnGateModel()
lindblad_noise = PlusMinusLindbladNoiseOperator()
lindblad_noise.add_operator_product(
(PlusMinusProduct().z(0), PlusMinusProduct().z(0)),
0.9)
lindblad_noise.add_operator_product(
(PlusMinusProduct().z(1), PlusMinusProduct().z(1)),
0.9)
noise_model = noise_model.set_two_qubit_term(
"CNOT", 0,1,
lindblad_noise
)
Implementations§
source§impl DecoherenceOnGateModelWrapper
impl DecoherenceOnGateModelWrapper
sourcepub fn new() -> DecoherenceOnGateModelWrapper
pub fn new() -> DecoherenceOnGateModelWrapper
Create a new DecoherenceOnGateModel.
sourcepub fn set_single_qubit_gate_error(
&self,
gate: &str,
qubit: usize,
noise_operator: &Bound<'_, PyAny>
) -> PyResult<Self>
pub fn set_single_qubit_gate_error( &self, gate: &str, qubit: usize, noise_operator: &Bound<'_, PyAny> ) -> PyResult<Self>
Set extra noise for a single qubit gate.
Args: gate (str): The name of the gate. qubit (int): The qubit the gate acts on. noise_operator (struqture_py.spins.PlusMinusLindbladNoiseOperator): The noise affecting system when gate is applied.
Returns: Self: The error model with the new noise on gate set.
Raises: PyTypeError: Noise operator is not a struqture.spins.PlusMinusLindbladNoiseOperator.
sourcepub fn get_single_qubit_gate_error(
&self,
gate: &str,
qubit: usize
) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
pub fn get_single_qubit_gate_error( &self, gate: &str, qubit: usize ) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
Return the extra noise for a single qubit gate, if it exists.
Args: gate (str): The name of the gate. qubit (int): The qubit the gate acts on.
Returns Optional[struqture_py.spins.PlusMinusLindbladNoiseOperator]: The error model applied when gate is applied.
sourcepub fn set_two_qubit_gate_error(
&self,
gate: &str,
control: usize,
target: usize,
noise_operator: &Bound<'_, PyAny>
) -> PyResult<Self>
pub fn set_two_qubit_gate_error( &self, gate: &str, control: usize, target: usize, noise_operator: &Bound<'_, PyAny> ) -> PyResult<Self>
Set extra noise for a two qubit gate.
Args: gate (str): The name of the gate. control (int): The control qubit the gate acts on. target (int): The target qubit the gate acts on. noise_operator (struqture_py.spins.PlusMinusLindbladNoiseOperator): The noise affecting system when gate is applied.
Returns: Self: The error model with the new noise on gate set.
Raises: PyTypeError: Noise operator is not a struqture.spins.PlusMinusLindbladNoiseOperator.
sourcepub fn get_two_qubit_gate_error(
&self,
gate: &str,
control: usize,
target: usize
) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
pub fn get_two_qubit_gate_error( &self, gate: &str, control: usize, target: usize ) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
Return the extra noise for a single qubit gate, if it exists.
Args: gate (str): The name of the gate. control (int): The control qubit the gate acts on. target (int): The target qubit the gate acts on.
Returns Optional[struqture_py.spins.PlusMinusLindbladNoiseOperator]: The error model applied when gate is applied.
sourcepub fn set_three_qubit_gate_error(
&self,
gate: &str,
control0: usize,
control1: usize,
target: usize,
noise_operator: &Bound<'_, PyAny>
) -> PyResult<Self>
pub fn set_three_qubit_gate_error( &self, gate: &str, control0: usize, control1: usize, target: usize, noise_operator: &Bound<'_, PyAny> ) -> PyResult<Self>
Set extra noise for a single qubit gate.
Args: gate (str): The name of the gate. control0 (int): The first control qubit the gate acts on. control1 (int): The second control qubit the gate acts on. target (int): The target qubit the gate acts on. noise_operator (struqture_py.spins.PlusMinusLindbladNoiseOperator): The noise affecting system when gate is applied.
Returns: Self: The error model with the new noise on gate set.
Raises: PyTypeError: Noise operator is not a struqture.spins.PlusMinusLindbladNoiseOperator.
sourcepub fn get_three_qubit_gate_error(
&self,
gate: &str,
control0: usize,
control1: usize,
target: usize
) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
pub fn get_three_qubit_gate_error( &self, gate: &str, control0: usize, control1: usize, target: usize ) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
Return the extra noise for a three qubit gate, if it exists.
Args: gate (str): The name of the gate. control0 (int): The first control qubit the gate acts on. control1 (int): The second control qubit the gate acts on. target (int): The target qubit the gate acts on.
Returns Optional[struqture_py.spins.PlusMinusLindbladNoiseOperator]: The error model applied when gate is applied.
sourcepub fn set_multi_qubit_gate_error(
&self,
gate: &str,
qubits: Vec<usize>,
noise_operator: &Bound<'_, PyAny>
) -> PyResult<Self>
pub fn set_multi_qubit_gate_error( &self, gate: &str, qubits: Vec<usize>, noise_operator: &Bound<'_, PyAny> ) -> PyResult<Self>
Set extra noise for a multi qubit gate.
Args: gate (str): The name of the gate. qubits (list): The qubits the gate acts on. noise_operator (struqture_py.spins.PlusMinusLindbladNoiseOperator): The noise affecting system when gate is applied.
Returns: Self: The error model with the new noise on gate set.
Raises: PyTypeError: Noise operator is not a struqture.spins.PlusMinusLindbladNoiseOperator.
sourcepub fn get_multi_qubit_gate_error(
&self,
gate: &str,
qubits: Vec<usize>
) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
pub fn get_multi_qubit_gate_error( &self, gate: &str, qubits: Vec<usize> ) -> Option<PlusMinusLindbladNoiseOperatorWrapper>
Return the extra noise for a multi qubit gate, if it exists.
Args: gate (str): The name of the gate. qubits (List[int]): The qubits the gate acts on.
Returns Optional[struqture_py.spins.PlusMinusLindbladNoiseOperator]: The error model applied when gate is applied.
sourcepub fn from_bincode(
input: &Bound<'_, PyAny>
) -> PyResult<DecoherenceOnGateModelWrapper>
pub fn from_bincode( input: &Bound<'_, PyAny> ) -> PyResult<DecoherenceOnGateModelWrapper>
Convert the bincode representation of the Noise-Model to a device using the bincode crate.
Args: input (ByteArray): The serialized Noise-Model (in bincode form).
Returns: The deserialized Noise-Model.
Raises: TypeError: Input cannot be converted to byte array. ValueError: Input cannot be deserialized to selected Noise-Model.
sourcepub fn from_json(input: &str) -> PyResult<DecoherenceOnGateModelWrapper>
pub fn from_json(input: &str) -> PyResult<DecoherenceOnGateModelWrapper>
Convert the json representation of a device to a Noise-Model.
Args: input (str): The serialized device in json form.
Returns: The deserialized device.
Raises: ValueError: Input cannot be deserialized to selected Noise-Model.
sourcepub fn __copy__(&self) -> Self
pub fn __copy__(&self) -> Self
Returns a copy of the device (copy here produces a deepcopy).
Returns: A deep copy of self.
sourcepub fn __deepcopy__(&self, _memodict: &Bound<'_, PyAny>) -> Self
pub fn __deepcopy__(&self, _memodict: &Bound<'_, PyAny>) -> Self
Creates deep copy of Noise-Model.
Returns: A deep copy of self.
sourcepub fn to_bincode(&self) -> PyResult<Py<PyByteArray>>
pub fn to_bincode(&self) -> PyResult<Py<PyByteArray>>
Return the bincode representation of the Noise-Model using the bincode crate.
Returns: ByteArray: The serialized Noise-Model (in bincode form).
Raises: ValueError: Cannot serialize Noise-Model to bytes.
source§impl DecoherenceOnGateModelWrapper
impl DecoherenceOnGateModelWrapper
sourcepub fn from_pyany(input: &Bound<'_, PyAny>) -> PyResult<NoiseModel>
pub fn from_pyany(input: &Bound<'_, PyAny>) -> PyResult<NoiseModel>
Fallible conversion of generic python object..
Trait Implementations§
source§impl Clone for DecoherenceOnGateModelWrapper
impl Clone for DecoherenceOnGateModelWrapper
source§fn clone(&self) -> DecoherenceOnGateModelWrapper
fn clone(&self) -> DecoherenceOnGateModelWrapper
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Default for DecoherenceOnGateModelWrapper
impl Default for DecoherenceOnGateModelWrapper
source§fn default() -> DecoherenceOnGateModelWrapper
fn default() -> DecoherenceOnGateModelWrapper
source§impl HasPyGilRef for DecoherenceOnGateModelWrapper
impl HasPyGilRef for DecoherenceOnGateModelWrapper
§type AsRefTarget = PyCell<DecoherenceOnGateModelWrapper>
type AsRefTarget = PyCell<DecoherenceOnGateModelWrapper>
source§impl PartialEq for DecoherenceOnGateModelWrapper
impl PartialEq for DecoherenceOnGateModelWrapper
source§fn eq(&self, other: &DecoherenceOnGateModelWrapper) -> bool
fn eq(&self, other: &DecoherenceOnGateModelWrapper) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PyClassImpl for DecoherenceOnGateModelWrapper
impl PyClassImpl for DecoherenceOnGateModelWrapper
source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
§type ThreadChecker = SendablePyClass<DecoherenceOnGateModelWrapper>
type ThreadChecker = SendablePyClass<DecoherenceOnGateModelWrapper>
type Inventory = Pyo3MethodsInventoryForDecoherenceOnGateModelWrapper
§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::ImmutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::ImmutableChild
§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny
by default, and when you declare
#[pyclass(extends=PyDict)]
, it’s PyDict
.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
source§impl PyClassNewTextSignature<DecoherenceOnGateModelWrapper> for PyClassImplCollector<DecoherenceOnGateModelWrapper>
impl PyClassNewTextSignature<DecoherenceOnGateModelWrapper> for PyClassImplCollector<DecoherenceOnGateModelWrapper>
fn new_text_signature(self) -> Option<&'static str>
source§impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a DecoherenceOnGateModelWrapper
impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a DecoherenceOnGateModelWrapper
source§impl PyTypeInfo for DecoherenceOnGateModelWrapper
impl PyTypeInfo for DecoherenceOnGateModelWrapper
source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
source§fn type_object(py: Python<'_>) -> &PyType
fn type_object(py: Python<'_>) -> &PyType
PyTypeInfo::type_object
will be replaced by PyTypeInfo::type_object_bound
in a future PyO3 versionsource§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
source§fn is_type_of(object: &PyAny) -> bool
fn is_type_of(object: &PyAny) -> bool
PyTypeInfo::is_type_of
will be replaced by PyTypeInfo::is_type_of_bound
in a future PyO3 versionobject
is an instance of this type or a subclass of this type.source§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object
is an instance of this type or a subclass of this type.source§fn is_exact_type_of(object: &PyAny) -> bool
fn is_exact_type_of(object: &PyAny) -> bool
PyTypeInfo::is_exact_type_of
will be replaced by PyTypeInfo::is_exact_type_of_bound
in a future PyO3 versionobject
is an instance of this type.impl DerefToPyAny for DecoherenceOnGateModelWrapper
impl StructuralPartialEq for DecoherenceOnGateModelWrapper
Auto Trait Implementations§
impl Freeze for DecoherenceOnGateModelWrapper
impl RefUnwindSafe for DecoherenceOnGateModelWrapper
impl Send for DecoherenceOnGateModelWrapper
impl Sync for DecoherenceOnGateModelWrapper
impl Unpin for DecoherenceOnGateModelWrapper
impl UnwindSafe for DecoherenceOnGateModelWrapper
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FromPyObject<'_> for T
impl<T> FromPyObject<'_> for T
source§impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
source§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.