About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
Z2Symmetries
class Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, tol=1e-14)
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
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
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
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.