transfer_vertex_jordan_wigner
transfer_vertex_jordan_wigner(op, num_qubits)
Map a TransferVertexOperator to a SparseObservable under the Jordan-Wigner transformation. [1]
Fermionic mode is mapped to qubit of the resulting SparseObservable, following Qiskit’s little-endian qubit ordering.
Parameters
- op – the transfer-vertex operator to map.
- num_qubits – the number of qubits for the resulting qubit operator. This must be strictly greater than the largest mode index in
op(any additional qubits are padded with the identity).
Returns
The mapped qubit operator. The result is not guaranteed to be fully simplified; call simplify() to combine any remaining duplicate terms. Duplicates are merged as the result is assembled, to bound the memory required, so the exact number of terms returned may vary with the number of threads used. This does not affect the operator that the result represents.
Raises
ValueError – if num_qubits is too small to hold the operator’s support, i.e. if it is not larger than the largest mode index acted upon by op.
Definition
Writing and for the smaller and larger of the two indices, the generalized transfer operators map onto single Pauli strings,
where for and otherwise.
The index order works the opposite way round to edge_vertex_jordan_wigner(): the coefficient is for both orientations and it is the Pauli letters that swap. and are genuinely different operators, with no antisymmetry relating them.
As for edge_vertex_jordan_wigner(), these Pauli strings differ from Eq. (10) of [2] by a single-qubit basis choice; the convention used here is the one consistent with transfer_vertex_to_fermion().
Mapping directly also avoids an intermediate blowup: each fermionic action maps onto a two-term sum, so routing a term built from transfer operators through a FermionOperator inflates a single Pauli string into up to terms. The saving grows with the length of the terms; for single-operator terms the two routes cost about the same.
Usage
>>> from qiskit_fermions.mappers.library import transfer_vertex_jordan_wigner
>>> from qiskit_fermions.operators import TransferVertexOperator
>>> top = TransferVertexOperator.from_dict({((0, 1),): 1.0, ((1, 0),): 1.0})
>>> transfer_vertex_jordan_wigner(top, 2).simplify()
<SparseObservable with 2 terms on 2 qubits: (-0.5+0j)(X_1 X_0) + (-0.5+0j)(Y_1 Y_0)>
[1]
P. Jordan and E. Wigner, Über das Paulische Äquivalenzverbot, Zeitschrift für Physik 47, No. 9. (1928), pp. 631–651, doi:10.1007/BF01331938.
[2]
L. Gandon et al., Fermionic quantum simulation with flow sets, arXiv:2512.11418.