Converters are objects which manipulate Operators, usually traversing an Operator to
change certain sub-Operators into a desired representation. Often the converted Operator is
isomorphic or approximate to the original Operator in some way, but not always. For example,
a converter may accept
CircuitOp and return a
PauliOp’s representing the
circuit unitary. Converters may not have polynomial space or time scaling in their operations.
On the contrary, many converters, such as a
MatrixOp’s internally, will require time or space
exponential in the number of qubits unless a clever trick is known
(such as the use of sparse matrices).
Converter Base Class¶
The converter base class simply enforces the presence of a
Converters take an Operator and return a new Operator, generally isomorphic in some way with the first, but with certain desired properties.
In addition to the base class, directory holds a few miscellaneous converters which are used frequently around the Operator flow.
The CircuitSampler traverses an Operator and converts any CircuitStateFns into approximations of the state function by a DictStateFn or VectorStateFn using a quantum backend.
The AbelianGrouper converts SummedOps into a sum of Abelian sums.
Converter for changing Paulis into other bases.
Two qubit reduction converter which eliminates the central and last qubit in a list of Pauli that has diagonal operators (Z,I) at those positions.