Skip to main contentIBM Quantum Documentation
You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version

Z2Symmetries

Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, tol=1e-14) GitHub(opens in a new tab)

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?