Representation Mappers

This module provides a framework for implementing custom representation mapper routines.

Generator-based mappers

These build a mapper from the Pauli images of an algebra’s generators.

Note

These four functions do not have a counterpart in the C API.

map_fermion_action_generators(operator, ...)

Map a FermionOperator to another operator type.

map_majorana_action_generators(operator, ...)

Map a MajoranaOperator to another operator type.

map_edge_vertex_generators(operator, ...[, ...])

Map a EdgeVertexOperator to another operator type.

map_transfer_vertex_generators(operator, ...)

Map a TransferVertexOperator to another operator type.

Ternary trees

A ternary tree on \(N\) nodes defines a fermion-to-qubit encoding of \(N\) modes onto \(N\) qubits, and the familiar encodings are particular tree shapes: a chain along "Z" is Jordan-Wigner, a chain along "X" is the parity encoding, and the balanced tree attains the optimal Pauli weight \(\lceil \log_3(2N+1) \rceil\). Arbitrary trees (including the irregular ones grown from a device’s coupling graph) are built by passing a parent-and-label specification to TernaryTree directly, which is what makes this a framework rather than a fixed set of encodings.

A tree is compiled into a TernaryTreeEncoding once and then passed to any of the ternary-tree mappers in library. Properties derived from the encoding itself, such as TernaryTreeEncoding.total_parity(), are methods on that class.

TernaryTree(spec)

A ternary tree defining a fermion-to-qubit encoding.

TernaryTreeEncoding(tree[, mode_map])

A ternary tree compiled into the Pauli images of its Majorana operators.