qiskit-documentation/docs/api/qiskit/0.43/qiskit.opflow.primitive_ops...

219 lines
9.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Z2Symmetries
description: API reference for qiskit.opflow.primitive_ops.Z2Symmetries
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.opflow.primitive_ops.Z2Symmetries
---
# Z2Symmetries
<Class id="qiskit.opflow.primitive_ops.Z2Symmetries" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.24/qiskit/opflow/primitive_ops/tapered_pauli_sum_op.py" signature="Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, tol=1e-14)" modifiers="class">
Bases: `object`
Deprecated: Z2 Symmetries
<Admonition title="Deprecated since version 0.24.0" type="danger">
The class `qiskit.opflow.primitive_ops.tapered_pauli_sum_op.Z2Symmetries` is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. For code migration guidelines, visit [https://qisk.it/opflow\_migration](https://qisk.it/opflow_migration).
</Admonition>
**Parameters**
* **symmetries** (*List\[*[*Pauli*](qiskit.quantum_info.Pauli "qiskit.quantum_info.operators.symplectic.pauli.Pauli")*]*) the list of Pauli objects representing the Z\_2 symmetries
* **sq\_paulis** (*List\[*[*Pauli*](qiskit.quantum_info.Pauli "qiskit.quantum_info.operators.symplectic.pauli.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** (*List\[int] | None*) values determines the sector.
* **tol** (*float*) Tolerance threshold for ignoring real and complex parts of a coefficient.
**Raises**
[**OpflowError**](qiskit.opflow.OpflowError "qiskit.opflow.OpflowError") Invalid paulis
## Methods Defined Here
<span id="qiskit-opflow-primitive-ops-z2symmetries-consistent-tapering" />
### consistent\_tapering
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.consistent_tapering" signature="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*](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.pauli_sum_op.PauliSumOp")) the to-be-tapered operator
**Returns**
The tapered operator
**Raises**
[**OpflowError**](qiskit.opflow.OpflowError "qiskit.opflow.OpflowError") The given operator does not commute with the symmetry
**Return type**
[*OperatorBase*](qiskit.opflow.OperatorBase "qiskit.opflow.operator_base.OperatorBase")
</Function>
<span id="qiskit-opflow-primitive-ops-z2symmetries-convert-clifford" />
### convert\_clifford
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.convert_clifford" signature="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*](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.pauli_sum_op.PauliSumOp")) to-be-tapered operator
**Returns**
[`PauliSumOp`](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.PauliSumOp") corresponding to the converted operator.
**Raises**
[**OpflowError**](qiskit.opflow.OpflowError "qiskit.opflow.OpflowError") Z2 symmetries, single qubit pauli and single qubit list cannot be empty
**Return type**
[*OperatorBase*](qiskit.opflow.OperatorBase "qiskit.opflow.operator_base.OperatorBase")
</Function>
<span id="qiskit-opflow-primitive-ops-z2symmetries-copy" />
### copy
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.copy" signature="Z2Symmetries.copy()">
Get a copy of self. :returns: copy
**Return type**
[*Z2Symmetries*](qiskit.opflow.primitive_ops.Z2Symmetries "qiskit.opflow.primitive_ops.tapered_pauli_sum_op.Z2Symmetries")
</Function>
<span id="qiskit-opflow-primitive-ops-z2symmetries-find-z2-symmetries" />
### find\_Z2\_symmetries
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.find_Z2_symmetries" signature="Z2Symmetries.find_Z2_symmetries(operator)" modifiers="classmethod">
Finds Z2 Pauli-type symmetries of an Operator.
**Returns**
a z2\_symmetries object contains symmetries, single-qubit X, single-qubit list.
**Return type**
[*Z2Symmetries*](qiskit.opflow.primitive_ops.Z2Symmetries "qiskit.opflow.primitive_ops.tapered_pauli_sum_op.Z2Symmetries")
</Function>
<span id="qiskit-opflow-primitive-ops-z2symmetries-is-empty" />
### is\_empty
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.is_empty" signature="Z2Symmetries.is_empty()">
Check the z2\_symmetries is empty or not. :returns: Empty or not
**Return type**
bool
</Function>
<span id="qiskit-opflow-primitive-ops-z2symmetries-taper" />
### taper
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.taper" signature="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`](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.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*](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.pauli_sum_op.PauliSumOp")) the to-be-tapered operator
**Returns**
\[[`PauliSumOp`](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.PauliSumOp")]; otherwise, [`PauliSumOp`](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.PauliSumOp")
**Return type**
If tapering\_values is None
**Raises**
[**OpflowError**](qiskit.opflow.OpflowError "qiskit.opflow.OpflowError") Z2 symmetries, single qubit pauli and single qubit list cannot be empty
</Function>
<span id="qiskit-opflow-primitive-ops-z2symmetries-taper-clifford" />
### taper\_clifford
<Function id="qiskit.opflow.primitive_ops.Z2Symmetries.taper_clifford" signature="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()`](qiskit.opflow.primitive_ops.Z2Symmetries#convert_clifford "qiskit.opflow.primitive_ops.Z2Symmetries.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*](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.pauli_sum_op.PauliSumOp")) Partially tapered operator resulting from a call to [`convert_clifford()`](qiskit.opflow.primitive_ops.Z2Symmetries#convert_clifford "qiskit.opflow.primitive_ops.Z2Symmetries.convert_clifford")
**Returns**
\[[`PauliSumOp`](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.PauliSumOp")]; otherwise, [`PauliSumOp`](qiskit.opflow.primitive_ops.PauliSumOp "qiskit.opflow.primitive_ops.PauliSumOp")
**Return type**
If tapering\_values is None
**Raises**
[**OpflowError**](qiskit.opflow.OpflowError "qiskit.opflow.OpflowError") Z2 symmetries, single qubit pauli and single qubit list cannot be empty
</Function>
## Attributes
### cliffords
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.cliffords">
Get clifford operators, build based on symmetries and single-qubit X. :returns: a list of unitaries used to diagonalize the Hamiltonian.
</Attribute>
### settings
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.settings">
Return operator settings.
</Attribute>
### sq\_list
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.sq_list">
returns sq list
</Attribute>
### sq\_paulis
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.sq_paulis">
returns sq paulis
</Attribute>
### symmetries
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.symmetries">
return symmetries
</Attribute>
### tapering\_values
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.tapering_values">
returns tapering values
</Attribute>
### tol
<Attribute id="qiskit.opflow.primitive_ops.Z2Symmetries.tol">
Tolerance threshold for ignoring real and complex parts of a coefficient.
</Attribute>
</Class>