132 lines
6.9 KiB
Plaintext
132 lines
6.9 KiB
Plaintext
---
|
||
title: observable_grouping (v0.9)
|
||
description: API reference for qiskit_addon_cutting.utils.observable_grouping in qiskit-addon-cutting v0.9
|
||
in_page_toc_min_heading_level: 2
|
||
python_api_type: module
|
||
python_api_name: qiskit_addon_cutting.utils.observable_grouping
|
||
---
|
||
|
||
<span id="module-qiskit_addon_cutting.utils.observable_grouping" />
|
||
|
||
<span id="observable-grouping-qiskit-addon-cutting-utils-observable-grouping" />
|
||
|
||
# Observable grouping
|
||
|
||
`qiskit_addon_cutting.utils.observable_grouping`
|
||
|
||
Module for conducting Pauli observable grouping.
|
||
|
||
### observables\_restricted\_to\_subsystem
|
||
|
||
<Function id="qiskit_addon_cutting.utils.observable_grouping.observables_restricted_to_subsystem" github="https://github.com/Qiskit/qiskit-addon-cutting/tree/stable/0.9/qiskit_addon_cutting/utils/observable_grouping.py" signature="observables_restricted_to_subsystem(qubits, global_observables, /)">
|
||
Restrict each observable to its support on a given subsystem.
|
||
|
||
A [`PauliList`](/api/qiskit/qiskit.quantum_info.PauliList "(in Qiskit v1.3)") will be returned if a [`PauliList`](/api/qiskit/qiskit.quantum_info.PauliList "(in Qiskit v1.3)") is provided; otherwise, a `list[Pauli]` will be returned.
|
||
|
||
Any phase information will be discarded, consistent with the standard behavior when slicing a Pauli.
|
||
|
||
**Parameters**
|
||
|
||
* **qubits** (Sequence\[int]) – The qubits in a subsystem
|
||
* **global\_observables** (Sequence\[Pauli] | PauliList) – The list of observables
|
||
|
||
**Return type**
|
||
|
||
list\[Pauli] | PauliList
|
||
|
||
**Returns**
|
||
|
||
Each [`Pauli`](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)") restricted to the subsystem.
|
||
|
||
```python
|
||
>>> observables_restricted_to_subsystem([1, 3], PauliList(["IXYZ", "iZZXX"]))
|
||
PauliList(['IY', 'ZX'])
|
||
```
|
||
</Function>
|
||
|
||
### CommutingObservableGroup
|
||
|
||
<Class id="qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup" github="https://github.com/Qiskit/qiskit-addon-cutting/tree/stable/0.9/qiskit_addon_cutting/utils/observable_grouping.py" signature="CommutingObservableGroup(general_observable, commuting_observables)" modifiers="class">
|
||
Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)")
|
||
|
||
Set of mutually qubit-wise commuting observables.
|
||
|
||
**Parameters**
|
||
|
||
* **general\_observable** ([*Pauli*](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)"))
|
||
* **commuting\_observables** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")*\[*[*Pauli*](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)")*]*)
|
||
|
||
#### commuting\_observables
|
||
|
||
<Attribute id="qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup.commuting_observables" attributeTypeHint="list[Pauli]">
|
||
Observables that can be measured simultaneously.
|
||
</Attribute>
|
||
|
||
#### general\_observable
|
||
|
||
<Attribute id="qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup.general_observable" attributeTypeHint="Pauli">
|
||
A single Pauli string that contains all qubit-wise measurements needed to measure everything in `commuting_observables`.
|
||
</Attribute>
|
||
|
||
#### pauli\_bitmasks
|
||
|
||
<Attribute id="qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup.pauli_bitmasks" attributeTypeHint="list[int]">
|
||
A bitmask for each observable in `commuting_observables`; given an element, each bit corresponds to whether the corresponding entry in `pauli_indices` is relevant to that observable.
|
||
</Attribute>
|
||
|
||
#### pauli\_indices
|
||
|
||
<Attribute id="qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup.pauli_indices" attributeTypeHint="list[int]">
|
||
The indices of non-identity [`Pauli`](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)")s in `general_observable`.
|
||
</Attribute>
|
||
</Class>
|
||
|
||
### ObservableCollection
|
||
|
||
<Class id="qiskit_addon_cutting.utils.observable_grouping.ObservableCollection" github="https://github.com/Qiskit/qiskit-addon-cutting/tree/stable/0.9/qiskit_addon_cutting/utils/observable_grouping.py" signature="ObservableCollection(observables, /)" modifiers="class">
|
||
Bases: [`object`](https://docs.python.org/3/library/functions.html#object "(in Python v3.13)")
|
||
|
||
Collection of observables organized for efficient taking of measurements.
|
||
|
||
The observables are automatically organized into sets of mutually qubit-wise commuting observables, each represented by a [`CommutingObservableGroup`](#qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup "qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup").
|
||
|
||
Assign member variables.
|
||
|
||
**Parameters**
|
||
|
||
**observables** (PauliList | Iterable\[Pauli]) – Observables of interest
|
||
|
||
#### construct\_general\_observables
|
||
|
||
<Function id="qiskit_addon_cutting.utils.observable_grouping.ObservableCollection.construct_general_observables" signature="construct_general_observables(commuting_subobservables, /)" modifiers="static">
|
||
Construct the most general observable from each set of mutually commuting observables.
|
||
|
||
In special cases, advanced users may want to subclass and override this `staticmethod` in order to measure additional qubits than the default for each general observable.
|
||
|
||
**Return type**
|
||
|
||
[`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")\[[`Pauli`](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)")]
|
||
|
||
**Parameters**
|
||
|
||
**commuting\_subobservables** ([*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")*\[*[*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.13)")*\[*[*Pauli*](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)")*]]*)
|
||
</Function>
|
||
|
||
#### groups
|
||
|
||
<Attribute id="qiskit_addon_cutting.utils.observable_grouping.ObservableCollection.groups" attributeTypeHint="list[CommutingObservableGroup]">
|
||
List of [`CommutingObservableGroup`](#qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup "qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup")s which, together, contain all desired observables.
|
||
</Attribute>
|
||
|
||
#### lookup
|
||
|
||
<Attribute id="qiskit_addon_cutting.utils.observable_grouping.ObservableCollection.lookup" attributeTypeHint="dict[Pauli, list[tuple[int, int]]]">
|
||
Get dict which maps each [`Pauli`](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)") observable to a list of indices, `(i, j)`, to commuting observables in `groups`.
|
||
|
||
For each element of the list, it means that the [`Pauli`](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)") is given by the `j`-th commuting observable in the `i`-th group.
|
||
|
||
This list will be of length 1 at minimum, but may potentially be longer if multiple [`CommutingObservableGroup`](#qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup "qiskit_addon_cutting.utils.observable_grouping.CommutingObservableGroup") objects are compatible with the given [`Pauli`](/api/qiskit/qiskit.quantum_info.Pauli "(in Qiskit v1.3)").
|
||
</Attribute>
|
||
</Class>
|
||
|