qrunch.quantum.operators.pauli.sums

Efficient representation of a Pauli sum.

Functions

convert_to_tuple_of_hermitian_pauli_sums(...)

Convert the input to a tuple of Hermitian Pauli Sums.

Classes

AntiHermitianPauliSum

Class for efficiently describing an anti-hermitian Pauli sum.

HermitianPauliSum

Class for efficiently describing a hermitian Pauli sum.

class AntiHermitianPauliSum

Bases: object

Class for efficiently describing an anti-hermitian Pauli sum.

i.e. expressions of the form:

\[0.7j * X(1) * Y(1) * X(2) * Z(5) + 0.2j * X(2) * Y(3) * X(5) * Z(7) + ...\]
__init__(pauli_string_coefficient_map: dict[PauliString, complex]) None

Initialize an AntiHermitianPauliSum, from Pauli strings and corresponding coefficients.

Parameters:

pauli_string_coefficient_map (dict[PauliString, complex]) – Pauli strings and coefficients in the pauli sum.

Return type:

None

classmethod from_expression(expression: Expression[PauliOperators] | int | float | complex) AntiHermitianPauliSum

Initialize an AntiHermitianPauliSum, from a Pauli expression.

The expression must be an anti-Hermitian Pauli sum to not fail validation.

Parameters:

expression (Expression[PauliOperators] | int | float | complex) – Expression to create the anti-Hermitian Pauli sum from.

Return type:

AntiHermitianPauliSum

indices() tuple[int, ...]

Get indices of the. operator.

Return type:

tuple[int, …]

string_coefficient_pairs() Iterator[tuple[PauliString, complex]]

Iterate through the terms and coefficients in the Pauli sum.

Return type:

Iterator[tuple[PauliString, complex]]

property terms_as_int: dict[tuple[int, int, int], complex]

Representation of where each pauli string is represented as a tuple of three integers.

This representation is useful in low-level code for speed, and putting it here allows for only computing this representation once.

class HermitianPauliSum

Bases: object

Class for efficiently describing a hermitian Pauli sum.

i.e. expressions of the form:

\[0.7 * X(1) * Y(1) * X(2) * Z(5) + 0.2 * X(2) * Y(3) * X(5) * Z(7) + ...\]
__init__(pauli_string_coefficient_map: dict[PauliString, float]) None

Initialize a HermitianPauliSum, from Pauli strings and corresponding coefficients.

Parameters:

pauli_string_coefficient_map (dict[PauliString, float]) – Pauli strings and coefficients in the pauli sum.

Return type:

None

constant() float

Return the constant term in the Pauli sum.

Return type:

float

classmethod from_expression(expression: Expression[PauliOperators] | int | float | complex, tolerance: float = 1e-12) HermitianPauliSum

Initialize a HermitianPauliSum, from a Pauli expression.

The expression must be a hermitian Pauli sum to not fail validation.

Parameters:
  • expression (Expression[PauliOperators] | int | float | complex) – Expression to create the hermitian Pauli sum from.

  • tolerance (float) – Ignores all terms with a coefficient below this value. Defaults to 1e-12.

Return type:

HermitianPauliSum

string_coefficient_pairs() Iterator[tuple[PauliString, float]]

Iterate through the terms and coefficients in the Pauli sum.

Return type:

Iterator[tuple[PauliString, float]]

property terms_as_int: dict[tuple[int, int, int], float]

Representation of where each pauli string is represented as a tuple of three integers.

This representation is useful in low-level code for speed, and putting it here allows for only computing this representation once.

convert_to_tuple_of_hermitian_pauli_sums(input_to_convert: Sequence[int | float | complex | Expression[PauliOperators]] | int | float | complex | Expression[PauliOperators] | Sequence[HermitianPauliSum] | HermitianPauliSum) tuple[HermitianPauliSum, ...]

Convert the input to a tuple of Hermitian Pauli Sums.

Parameters:

input_to_convert (Sequence[int | float | complex | Expression[PauliOperators]] | int | float | complex | Expression[PauliOperators] | Sequence[HermitianPauliSum] | HermitianPauliSum)

Return type:

tuple[HermitianPauliSum, …]