qiskit-documentation/docs/api/qiskit-addon-cutting/0.9/utils-observable-grouping.mdx

132 lines
6.9 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: 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>