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.

create_anti_hermitian_pauli_sum_from_expression(...)

Create a AntiHermitianPauliSum from a Pauli expression.

create_hermitian_pauli_sum_from_expression(...)

Create a HermitianPauliSum from a Pauli expression.

Classes

AntiHermiPythontianPauliSum

Class for efficiently describing an anti-hermitian Pauli sum.

HermiPythontianPauliSum

Class for efficiently describing a hermitian Pauli sum.

class AntiHermiPythontianPauliSum

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 AntiHermiPythontianPauliSum, 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) AntiHermiPythontianPauliSum

Initialize an AntiHermiPythontianPauliSum, 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:

AntiHermiPythontianPauliSum

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 HermiPythontianPauliSum

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 HermiPythontianPauliSum, 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) HermiPythontianPauliSum

Initialize a HermiPythontianPauliSum, 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:

HermiPythontianPauliSum

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, max_number_of_qubits: int) tuple[HermitianPauliSum, ...]

Convert the input to a tuple of Hermitian Pauli Sums.

Parameters:
Return type:

tuple[HermitianPauliSum, …]

create_anti_hermitian_pauli_sum_from_expression(expression: Expression[PauliOperators] | int | float | complex, tolerance: float = 1e-12) AntiHermitianPauliSum

Create a AntiHermitianPauliSum 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:

AntiHermitianPauliSum

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

Create 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.

  • max_number_of_qubits (int) – The maximum number of qubits (size of circuit).

Return type:

HermitianPauliSum