SymbolicTermSum¶
- class zixy.qubit.pauli.SymbolicTermSum(qubits: int | Qubits = 0)[source]¶
Bases:
TermSum[Expr]A sum of terms consisting of Pauli strings and symbolic coefficients.
A set-like container of qubit-based terms that may be used to store unique terms and perform algebraic operations on them.
Note
Coefficients are mutable in-place, but components are the keys of a hashmap and therefore are not.
- __getitem__(value: SpecT | Cmpnt[ImplT, SpecT] | Term[ImplT, SpecT, CoeffT]) CoeffT¶
Get the coefficient of the term with component specified by
value.- Parameters:
value – The component or term specifier.
- Returns:
The coefficient of the term with component specified by
value.- Raises:
KeyError – The component specified by
valuewas not found inself.
- __imul__(scalar: int | float | complex | Sign | ComplexSign | Expr) Self¶
In-place multiplication of
selfbyscalar.
- __init__(qubits: int | Qubits = 0)¶
Initialize the term set.
- Parameters:
qubits – The qubit register or qubit count.
- __itruediv__(scalar: int | float | complex | Sign | ComplexSign | Expr) Self¶
In-place division of
selfbyscalar.
- __mul__(other: Self | int | float | complex | Sign | ComplexSign | Expr) Self | SymbolicTermSum[source]¶
- Overloads:
self, other (Coeff) → Self
self, other (Self) → Self
Multiplication of
selfbyother.
- __rmul__(scalar: int | float | complex | Sign | ComplexSign | Expr) Self¶
Multiplication of
scalarbyself.
- __setitem__(key: SpecT | Term[ImplT, SpecT, CoeffT], coeff: CoeffT) None¶
Set the coefficient of the term with component specified by
key.
- __truediv__(scalar: int | float | complex | Sign | ComplexSign | Expr) Self¶
Division of
selfbyscalar.
- add_iterable(iterable: Iterable[Term[ImplT, SpecT, CoeffT]]) None¶
In-place addition of the terms in
iterabletoself.- Parameters:
iterable – Iterable of terms to add to
self.
Note
This method operates in-place.
- commutator(other: TermSum[CoeffT]) TermSum[Any]¶
Compute the commutator of
selfwithother.\[[A, B] = AB - BA.\]
- commutes_with(other: TermSum[CoeffT], atol: float = 1e-12) bool¶
Check whether
selfcommutes withother.\[[A, B] = 0.\]- Parameters:
other – The other operand.
atol – The absolute tolerance.
- Returns:
Whether
selfcommutes withother.
See also
- conserves_hamming_weight(atol: float = 1e-12) bool¶
Check whether
selfconserves Hamming weight.- Parameters:
atol – The absolute tolerance to use.
- Returns:
Whether
selfconserves Hamming weight.
See also
create_num_op()
- conserves_odd_bit_hamming_weight(atol: float = 1e-12) bool¶
Check whether
selfconserves odd-bit Hamming weight.- Parameters:
atol – The absolute tolerance to use.
- Returns:
Whether
selfconserves odd-bit Hamming weight.
See also
create_num_op_odd_bits()
- contains(value: SpecT | Cmpnt[ImplT, SpecT] | Term[ImplT, SpecT, CoeffT]) bool¶
Check whether the component specified by
valueis stored inself.- Parameters:
value – The component specifier.
- Returns:
Whether the lookup of
valuewas successful.
- filter_map(f: Callable[[Term[ImplT, SpecT, CoeffT]], bool]) Self¶
Eagerly evaluate a filter-map operation over the terms of
self.- Parameters:
f – Function which may mutate copies of the terms of
self, returningTrueif those mutated copies are to be included in the generator. The function signature should take a singleTerminstance as an argument, and return a boolean.- Returns:
New instance containing the occurrences of selected (and possibly mutated) components of
selfaccording tof.
Note
The resulting generator enforces uniqueness of components by overwriting coefficients of duplicate components.
- classmethod from_iterable(iterable: Iterable[Term[ImplT, SpecT, CoeffT]], *args: Any, **kwargs: Any) Self¶
Create a new instance of
clsfrom an iterable.- Parameters:
iterable – Iterable returning specifiers of all the terms to be appended.
args – Positional arguments to forward to the constructor of
cls.kwargs – Keyword arguments to forward to the constructor of
cls.
- Returns:
New instance of
clscontaining the terms specified byiterable.
- classmethod from_str(source: str, qubits: int | Qubits | None = None) Self¶
Create a new instance of
clsby parsing an input string.- Parameters:
source – Input string to parse.
qubits – Space of qubits or a number of qubits. If
None, infer from the max qubit index in the input string.
- Returns:
A new instance containing the Pauli strings and coefficients in the
source.
- classmethod from_terms(terms: Terms[ImplT, SpecT, CoeffT]) Self¶
Create a new instance of
clsfromterms.- Parameters:
terms – Terms-derived object from which to construct the set of terms.
- Returns:
A new instance of
clscontaining the terms interms.
- insert(key: Term[ImplT, SpecT, CoeffT] | Cmpnt[ImplT, SpecT] | SpecT | tuple[SpecT | Cmpnt[ImplT, SpecT] | None, CoeffT | None] | None) int¶
Try to insert the given term.
- Parameters:
key – The term specifier.
- Returns:
The index at which the term was inserted, or the index at which it already was stored if insertion is unsuccessful.
Note
This method operates in-place.
- insert_iterable(source: Iterable[Term[ImplT, SpecT, CoeffT] | Cmpnt[ImplT, SpecT] | SpecT | tuple[SpecT | Cmpnt[ImplT, SpecT] | None, CoeffT | None] | None] = ()) None¶
Insert many terms from an iterable source.
- Parameters:
source – Iterable over any term specifiers.
Note
This method operates in-place.
- into(t: type[TermSet[ImplT, SpecT, OtherCoeffT]]) TermSet[ImplT, SpecT, OtherCoeffT]¶
Clone
selfinto a new related container of typet.- Parameters:
t – Type of the new container to create.
- Returns:
A new instance of
tcontaining the same data asself.
- iter_filter_map(f: Callable[[Term[ImplT, SpecT, CoeffT]], bool]) Iterator[Term[ImplT, SpecT, CoeffT]]¶
Lazily evaluate a filter-map operation over the terms of
self.- Parameters:
f – Function which may mutate copies of the terms of
self, returningTrueif those mutated copies are to be included in the generator. The function signature should take a singleTerminstance as an argument, and return a boolean.- Returns:
Iterator over the selected (and possibly mutated) components of
selfaccording tof.
Note
The resulting generator does not enforce uniqueness of components.
- iter_filter_nonzero() Iterator[Term[ImplT, SpecT, CoeffT]]¶
Iterate over the non-zero terms of
self.
- lookup(value: SpecT | Cmpnt[ImplT, SpecT] | Term[ImplT, SpecT, CoeffT]) tuple[int, CoeffT] | None¶
Try to find the index and coefficient of the component specified by
value.- Parameters:
value – The component or term specifier.
- Returns:
The index at which the value was inserted, or
Noneif the value was not found.
- lookup_coeff(value: SpecT | Cmpnt[ImplT, SpecT] | Term[ImplT, SpecT, CoeffT]) CoeffT | None¶
Try to find the coefficient of the term specified by
valueinself.- Parameters:
value – The component or term specifier.
- Returns:
The coefficient of the term specified by
valueif it is present inself, andNoneotherwise.
- lookup_index(value: SpecT | Cmpnt[ImplT, SpecT] | Term[ImplT, SpecT, CoeffT]) int | None¶
Try to find the index of the component specified by
valueinself.- Parameters:
value – The component or term specifier.
- Returns:
The index of the component specified by
valueif it is present inself, andNoneotherwise.
- remove(value: SpecT | Cmpnt[ImplT, SpecT] | Term[ImplT, SpecT, CoeffT]) int¶
Try to remove the component specified by
valuefromself.If the component is found, removal proceeds via swap-remove.
- Parameters:
value – The component specifier.
- Returns:
The index at which the component was removed.
- Raises:
KeyError – The component was not found.
- soft_insert(key: Term[ImplT, SpecT, CoeffT] | Cmpnt[ImplT, SpecT] | SpecT | tuple[SpecT | Cmpnt[ImplT, SpecT] | None, CoeffT | None] | None) tuple[int, bool]¶
Insertion method which does not overwrite coefficient values.
Operates similarly to
insert(), but does not overwrite coefficient values if the component specified bykeyis already present inself.- Parameters:
key – The term specifier.
- Returns:
Index at which the term was inserted or found, and a boolean indicating whether insertion was successful (i.e. whether the component specified by
keywas not already present inself).
Note
This method operates in-place.
- terms_type¶
alias of
SymbolicTerms
- to_dataframe() DataFrame¶
Convert
selfto aDataFrame.