Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

Z2Symmetries

class Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, tol=1e-14)

GitHub

Bases: object

Z2 Symmetries

Parameters

  • symmetries (List[Pauli]) – the list of Pauli objects representing the Z_2 symmetries
  • sq_paulis (List[Pauli]) – the list of single - qubit Pauli objects to construct the Clifford operators
  • sq_list (List[int]) – the list of support of the single-qubit Pauli objects used to build the Clifford operators
  • tapering_values (Optional[List[int]]) – values determines the sector.
  • tol (float) – Tolerance threshold for ignoring real and complex parts of a coefficient.

Raises

OpflowError – Invalid paulis


Methods Defined Here

consistent_tapering

Z2Symmetries.consistent_tapering(operator)

Tapering the operator with the same manner of how this tapered operator is created. i.e., using the same Cliffords and tapering values.

Parameters

operator (PauliSumOp) – the to-be-tapered operator

Return type

OperatorBase

Returns

The tapered operator

Raises

OpflowError – The given operator does not commute with the symmetry

convert_clifford

Z2Symmetries.convert_clifford(operator)

This method operates the first part of the tapering. It converts the operator by composing it with the clifford unitaries defined in the current symmetry.

Parameters

operator (PauliSumOp) – to-be-tapered operator

Return type

OperatorBase

Returns

PauliSumOp corresponding to the converted operator.

Raises

OpflowError – Z2 symmetries, single qubit pauli and single qubit list cannot be empty

copy

Z2Symmetries.copy()

Get a copy of self. :rtype: Z2Symmetries :returns: copy

find_Z2_symmetries

classmethod Z2Symmetries.find_Z2_symmetries(operator)

Finds Z2 Pauli-type symmetries of an Operator.

Return type

Z2Symmetries

Returns

a z2_symmetries object contains symmetries, single-qubit X, single-qubit list.

is_empty

Z2Symmetries.is_empty()

Check the z2_symmetries is empty or not. :rtype: bool :returns: Empty or not

taper

Z2Symmetries.taper(operator)

Taper an operator based on the z2_symmetries info and sector defined by tapering_values. The tapering_values will be stored into the resulted operator for a record.

The tapering is a two-step algorithm which first converts the operator into a PauliSumOp with same eigenvalues but where some qubits are only acted upon with the Pauli operators I or X. The number M of these redundant qubits is equal to the number M of identified symmetries.

The second step of the reduction consists in replacing these qubits with the possible eigenvalues of the corresponding Pauli X, giving 2^M new operators with M less qubits. If an eigenvalue sector was previously identified for the solution, then this reduces to 1 new operator with M less qubits.

Parameters

operator (PauliSumOp) – the to-be-tapered operator

Returns

[PauliSumOp]; otherwise, PauliSumOp

Return type

If tapering_values is None

Raises

OpflowError – Z2 symmetries, single qubit pauli and single qubit list cannot be empty

taper_clifford

Z2Symmetries.taper_clifford(operator)

This method operates the second part of the tapering. This function assumes that the input operators have already been transformed using convert_clifford(). The redundant qubits due to the symmetries are dropped and replaced by their two possible eigenvalues. The tapering_values will be stored into the resulted operator for a record.

Parameters

operator (PauliSumOp) – Partially tapered operator resulting from a call to convert_clifford()

Returns

[PauliSumOp]; otherwise, PauliSumOp

Return type

If tapering_values is None

Raises

OpflowError – Z2 symmetries, single qubit pauli and single qubit list cannot be empty


Attributes

cliffords

Get clifford operators, build based on symmetries and single-qubit X. :rtype: List[PauliSumOp] :returns: a list of unitaries used to diagonalize the Hamiltonian.

settings

Return operator settings.

Return type

Dict

sq_list

returns sq list

sq_paulis

returns sq paulis

symmetries

return symmetries

tapering_values

returns tapering values

tol

Tolerance threshold for ignoring real and complex parts of a coefficient.

Was this page helpful?
Report a bug or request content on GitHub.