pub struct MixedPlusMinusOperatorWrapper {
pub internal: MixedPlusMinusOperator,
}
Expand description
These are representations of systems of mixed_systems.
MixedPlusMinusOperators are characterized by a MixedOperator to represent the hamiltonian of the spin system and an optional number of mixed_systems.
Args: number_spins (int): The number of spin subsystems in the MixedPlusMinusOperator. number_bosons (int): The number of boson subsystems in the MixedPlusMinusOperator. number_fermions (int): The number of fermion subsystems in the MixedPlusMinusOperator.
Returns: self: The new (empty) MixedPlusMinusOperator.
§Examples
.. code-block:: python
import numpy.testing as npt
import scipy.sparse as sp
from qoqo_calculator_pyo3 import CalculatorComplex
from struqture_py.mixed_systems import MixedPlusMinusOperator, MixedPlusMinusProduct
from struqture_py.spins import PauliProduct
from struqture_py.bosons import BosonProduct
from struqture_py.fermions import FermionProduct
system = MixedPlusMinusOperator(1, 1, 1)
pp = MixedPlusMinusProduct([PauliProduct().z(0)], [BosonProduct([0], [1])], [FermionProduct([0], [0])])
system.add_operator_product(pp, 5.0)
npt.assert_equal(system.current_number_spins(), [1])
npt.assert_equal(system.get(pp), CalculatorComplex(5))
Fields§
§internal: MixedPlusMinusOperator
Internal storage of struqture::mixed_systems::MixedPlusMinusOperator
Implementations§
Source§impl MixedPlusMinusOperatorWrapper
impl MixedPlusMinusOperatorWrapper
Sourcepub fn from_pyany(input: &Bound<'_, PyAny>) -> PyResult<MixedPlusMinusOperator>
pub fn from_pyany(input: &Bound<'_, PyAny>) -> PyResult<MixedPlusMinusOperator>
Fallible conversion of generic python object.
Source§impl MixedPlusMinusOperatorWrapper
impl MixedPlusMinusOperatorWrapper
Sourcepub fn new(
number_spins: usize,
number_bosons: usize,
number_fermions: usize,
) -> Self
pub fn new( number_spins: usize, number_bosons: usize, number_fermions: usize, ) -> Self
Create an empty MixedPlusMinusOperator.
Args: number_spins (int): The number of spin subsystems in the MixedPlusMinusOperator. number_bosons (int): The number of boson subsystems in the MixedPlusMinusOperator. number_fermions (int): The number of fermion subsystems in the MixedPlusMinusOperator.
Returns: self: The new (empty) MixedPlusMinusOperator.
Sourcepub fn __mul__(&self, value: &Bound<'_, PyAny>) -> PyResult<Self>
pub fn __mul__(&self, value: &Bound<'_, PyAny>) -> PyResult<Self>
Implement *
for MixedPlusMinusOperator and MixedPlusMinusOperator/CalculatorComplex/CalculatorFloat.
Args: value (Union[MixedPlusMinusOperator, CalculatorComplex, CalculatorFloat]): value by which to multiply the self MixedPlusMinusOperator
Returns: MixedPlusMinusOperator: The MixedPlusMinusOperator multiplied by the value.
Raises: ValueError: The rhs of the multiplication is neither CalculatorFloat, CalculatorComplex, nor MixedPlusMinusOperator.
Sourcepub fn from_mixed_operator(
value: &Bound<'_, PyAny>,
) -> PyResult<MixedPlusMinusOperatorWrapper>
pub fn from_mixed_operator( value: &Bound<'_, PyAny>, ) -> PyResult<MixedPlusMinusOperatorWrapper>
Convert a MixedOperator into a MixedPlusMinusOperator.
Args: value (MixedOperator): The MixedOperator to create the MixedPlusMinusOperator from.
Returns: MixedPlusMinusOperator: The operator created from the input MixedOperator.
Raises: ValueError: Could not create MixedOperator from input.
Sourcepub fn to_mixed_operator(&self) -> PyResult<MixedOperatorWrapper>
pub fn to_mixed_operator(&self) -> PyResult<MixedOperatorWrapper>
Convert a MixedPlusMinusOperator into a MixedOperator.
Returns: MixedOperator: The operator created from the input MixedPlusMinusOperator and optional number of spins.
Raises: ValueError: Could not create MixedOperator from MixedPlusMinusOperator. ValueError: Could not create MixedOperator from MixedOperator.
Sourcepub fn keys(&self) -> Vec<MixedPlusMinusProductWrapper>
pub fn keys(&self) -> Vec<MixedPlusMinusProductWrapper>
Return a list of the unsorted keys in self.
Returns: List[OperatorProduct]: The sequence of keys of the self.
Sourcepub fn __len__(&self) -> usize
pub fn __len__(&self) -> usize
Return number of entries in self.
Returns: int: The length of the content of self.
Sourcepub fn empty_clone(
&self,
capacity: Option<usize>,
) -> MixedPlusMinusOperatorWrapper
pub fn empty_clone( &self, capacity: Option<usize>, ) -> MixedPlusMinusOperatorWrapper
Return an instance of self that has no entries but clones all other properties, with the given capacity.
Args: capacity (Optional[int]): The capacity of the new instance to create.
Returns: self: An empty clone with the same properties as self, with the given capacity.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Return true if self contains no values.
Returns: bool: Whether self is empty or not.
Sourcepub fn truncate(&self, threshold: f64) -> MixedPlusMinusOperatorWrapper
pub fn truncate(&self, threshold: f64) -> MixedPlusMinusOperatorWrapper
Truncate self by returning a copy without entries under a threshold.
Args: threshold (float): The threshold for inclusion.
Returns: self: The truncated version of self.
Sourcepub fn get(&self, key: &Bound<'_, PyAny>) -> PyResult<CalculatorComplexWrapper>
pub fn get(&self, key: &Bound<'_, PyAny>) -> PyResult<CalculatorComplexWrapper>
Get the coefficient corresponding to the key.
Args: key: Product to get the value of.
Returns: CalculatorComplex: Value at key (or 0.0).
Raises: ValueError: Product could not be constructed from key.
Sourcepub fn remove(
&mut self,
key: &Bound<'_, PyAny>,
) -> PyResult<Option<CalculatorComplexWrapper>>
pub fn remove( &mut self, key: &Bound<'_, PyAny>, ) -> PyResult<Option<CalculatorComplexWrapper>>
Remove the value of the input key.
Args: key (Product type): The key of the value to remove.
Returns: Optional[Union[CalculatorComplex, CalculatorFloat]]: Key existed if this is not None, and this is the value it had before it was removed.
Raises: ValueError: Product could not be constructed.
Sourcepub fn set(
&mut self,
key: &Bound<'_, PyAny>,
value: &Bound<'_, PyAny>,
) -> PyResult<Option<CalculatorComplexWrapper>>
pub fn set( &mut self, key: &Bound<'_, PyAny>, value: &Bound<'_, PyAny>, ) -> PyResult<Option<CalculatorComplexWrapper>>
Overwrite an existing entry or set a new entry in self.
Args: key (Product type): The key to set. value (Union[CalculatorComplex, CalculatorFloat]): The value to set.
Returns: Optional[Union[CalculatorComplex, CalculatorFloat]]: Key existed if this is not None, and this is the value it had before it was overwritten.
Raises: ValueError: Product could not be constructed.
Sourcepub fn add_operator_product(
&mut self,
key: &Bound<'_, PyAny>,
value: &Bound<'_, PyAny>,
) -> PyResult<()>
pub fn add_operator_product( &mut self, key: &Bound<'_, PyAny>, value: &Bound<'_, PyAny>, ) -> PyResult<()>
Add a new (key object, value Union[CalculatorComplex, CalculatorFloat]) pair to existing entries.
Args: key (Product type): The key object value (Union[CalculatorComplex, CalculatorFloat]): The value to add.
Raises: TypeError: Value is not CalculatorComplex or CalculatorFloat. ValueError: Product could not be constructed. ValueError: Error in add_operator_product function of self.
Sourcepub fn values(&self) -> Vec<CalculatorComplexWrapper>
pub fn values(&self) -> Vec<CalculatorComplexWrapper>
Return unsorted values in self.
Returns: List[Union[CalculatorComplex, CalculatorFloat]]: The sequence of values of self.
Sourcepub fn hermitian_conjugate(&self) -> MixedPlusMinusOperatorWrapper
pub fn hermitian_conjugate(&self) -> MixedPlusMinusOperatorWrapper
Return the hermitian conjugate of self.
Returns: self: The hermitian conjugate of self.
Sourcepub fn current_number_spins(&self) -> Vec<usize>
pub fn current_number_spins(&self) -> Vec<usize>
Return the current_number_spins input of each spin subsystem of self.
Returns: List[int]: Number of spins in each spin sub-system.
Sourcepub fn current_number_bosonic_modes(&self) -> Vec<usize>
pub fn current_number_bosonic_modes(&self) -> Vec<usize>
Return the number of bosonic modes in each bosonic subsystem of self.
Returns: list[int]: The number of bosonic modes in each bosonic subsystem of self.
Sourcepub fn current_number_fermionic_modes(&self) -> Vec<usize>
pub fn current_number_fermionic_modes(&self) -> Vec<usize>
Return the number of fermionic modes in each fermionic subsystem of self.
Returns: list[int]: The number of fermionic modes in each fermionic subsystem of self.
Sourcepub fn __neg__(&self) -> MixedPlusMinusOperatorWrapper
pub fn __neg__(&self) -> MixedPlusMinusOperatorWrapper
Implement -1
for self.
Returns: self: The object * -1.
Sourcepub fn __add__(
&self,
other: MixedPlusMinusOperatorWrapper,
) -> PyResult<MixedPlusMinusOperatorWrapper>
pub fn __add__( &self, other: MixedPlusMinusOperatorWrapper, ) -> PyResult<MixedPlusMinusOperatorWrapper>
Implement +
for self with self-type.
Args: other (self): value by which to add to self.
Returns: self: The two objects added.
Raises: ValueError: Objects could not be added.
Sourcepub fn __sub__(
&self,
other: MixedPlusMinusOperatorWrapper,
) -> PyResult<MixedPlusMinusOperatorWrapper>
pub fn __sub__( &self, other: MixedPlusMinusOperatorWrapper, ) -> PyResult<MixedPlusMinusOperatorWrapper>
Implement -
for self with self-type.
Args: other (self): value by which to subtract from self.
Returns: self: The two objects subtracted.
Raises: ValueError: Objects could not be subtracted.
Sourcepub fn __copy__(&self) -> MixedPlusMinusOperatorWrapper
pub fn __copy__(&self) -> MixedPlusMinusOperatorWrapper
Return a copy of self (copy here produces a deepcopy).
Returns: self: A deep copy of self.
Sourcepub fn __deepcopy__(
&self,
_memodict: &Bound<'_, PyAny>,
) -> MixedPlusMinusOperatorWrapper
pub fn __deepcopy__( &self, _memodict: &Bound<'_, PyAny>, ) -> MixedPlusMinusOperatorWrapper
Return a deep copy of self.
Returns: self: A deep copy of self.
Sourcepub fn from_bincode(
input: &Bound<'_, PyAny>,
) -> PyResult<MixedPlusMinusOperatorWrapper>
pub fn from_bincode( input: &Bound<'_, PyAny>, ) -> PyResult<MixedPlusMinusOperatorWrapper>
Sourcepub fn to_bincode(&self) -> PyResult<Py<PyByteArray>>
pub fn to_bincode(&self) -> PyResult<Py<PyByteArray>>
Sourcepub fn to_json(&self) -> PyResult<String>
pub fn to_json(&self) -> PyResult<String>
Return the json representation of self.
Returns: str: The serialized form of self.
Raises: ValueError: Cannot serialize object to json.
Sourcepub fn from_json(input: String) -> PyResult<MixedPlusMinusOperatorWrapper>
pub fn from_json(input: String) -> PyResult<MixedPlusMinusOperatorWrapper>
Convert the json representation of self to an instance.
Args: input (str): The serialized object in json form.
Returns: The deserialized object.
Raises: ValueError: Input cannot be deserialized.
Sourcepub fn __str__(&self) -> String
pub fn __str__(&self) -> String
Return a string containing a printable representation of self.
Returns: str: The printable string representation of self.
Sourcepub fn __repr__(&self) -> String
pub fn __repr__(&self) -> String
Return a string containing a printable representation of self.
Returns: str: The printable string representation of self.
Sourcepub fn __richcmp__(
&self,
other: &Bound<'_, PyAny>,
op: CompareOp,
) -> PyResult<bool>
pub fn __richcmp__( &self, other: &Bound<'_, PyAny>, op: CompareOp, ) -> PyResult<bool>
Return the richcmp magic method to perform rich comparison operations on object.
Args: other: The object to compare self to. op: Whether they should be equal or not.
Returns: Whether the two operations compared evaluated to True or False
Raises: NotImplementedError: Other comparison not implemented.
Trait Implementations§
Source§impl Clone for MixedPlusMinusOperatorWrapper
impl Clone for MixedPlusMinusOperatorWrapper
Source§fn clone(&self) -> MixedPlusMinusOperatorWrapper
fn clone(&self) -> MixedPlusMinusOperatorWrapper
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'py> IntoPyObject<'py> for MixedPlusMinusOperatorWrapper
impl<'py> IntoPyObject<'py> for MixedPlusMinusOperatorWrapper
Source§type Target = MixedPlusMinusOperatorWrapper
type Target = MixedPlusMinusOperatorWrapper
Source§type Output = Bound<'py, <MixedPlusMinusOperatorWrapper as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <MixedPlusMinusOperatorWrapper as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PartialEq for MixedPlusMinusOperatorWrapper
impl PartialEq for MixedPlusMinusOperatorWrapper
Source§fn eq(&self, other: &MixedPlusMinusOperatorWrapper) -> bool
fn eq(&self, other: &MixedPlusMinusOperatorWrapper) -> bool
self
and other
values to be equal, and is used by ==
.Source§impl PyClassImpl for MixedPlusMinusOperatorWrapper
impl PyClassImpl for MixedPlusMinusOperatorWrapper
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
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§type ThreadChecker = SendablePyClass<MixedPlusMinusOperatorWrapper>
type ThreadChecker = SendablePyClass<MixedPlusMinusOperatorWrapper>
type Inventory = Pyo3MethodsInventoryForMixedPlusMinusOperatorWrapper
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§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<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
impl PyClassNewTextSignature<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
fn new_text_signature(self) -> Option<&'static str>
Source§impl PyClass__add__SlotFragment<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
impl PyClass__add__SlotFragment<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
Source§impl PyClass__mul__SlotFragment<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
impl PyClass__mul__SlotFragment<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
Source§impl PyClass__sub__SlotFragment<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
impl PyClass__sub__SlotFragment<MixedPlusMinusOperatorWrapper> for PyClassImplCollector<MixedPlusMinusOperatorWrapper>
Source§impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a MixedPlusMinusOperatorWrapper
impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a MixedPlusMinusOperatorWrapper
Source§impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut MixedPlusMinusOperatorWrapper
impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut MixedPlusMinusOperatorWrapper
Source§impl PyTypeInfo for MixedPlusMinusOperatorWrapper
impl PyTypeInfo for MixedPlusMinusOperatorWrapper
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Source§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
impl DerefToPyAny for MixedPlusMinusOperatorWrapper
impl StructuralPartialEq for MixedPlusMinusOperatorWrapper
Auto Trait Implementations§
impl Freeze for MixedPlusMinusOperatorWrapper
impl RefUnwindSafe for MixedPlusMinusOperatorWrapper
impl Send for MixedPlusMinusOperatorWrapper
impl Sync for MixedPlusMinusOperatorWrapper
impl Unpin for MixedPlusMinusOperatorWrapper
impl UnwindSafe for MixedPlusMinusOperatorWrapper
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
Source§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self
into an owned Python object, dropping type information.