Source code for mpstab.engines.tensor_networks.native

from __future__ import annotations

from typing import Any

from mpstab.engines.tensor_networks.abstract import TensorNetworkEngine
from mpstab.evolutors.tensor_network.circuit_mps import CircuitMPS
from mpstab.evolutors.tensor_network.operators.observables import PauliMPO


[docs] class NativeTensorNetworkEngine(TensorNetworkEngine): """ Thin adapter that exposes the minimal API required by HybridSurrogate while reusing the existing evolutors.tensor_network implementation. """
[docs] def build_circuit_mps( self, n: int, initial_state_amplitudes: Any, initial_state_circuit: Any, max_bond_dimension: int | None = None, ): """ Create a CircuitMPS initialised with `initial_state`. `initial_state` is passed as-is to CircuitMPS (the caller creates the array of single-qubit amplitudes as before). """ return CircuitMPS( n=n, initial_state=initial_state_amplitudes, max_bond_dimension=max_bond_dimension, )
[docs] def pauli_mpo(self, pauli_string: str | object): """Return the existing PauliMPO for the given pauli_string.""" return PauliMPO(pauli_string)
[docs] def expval(self, state_circuit: CircuitMPS, operator: PauliMPO): """Compute the expectation value of `operator` on `state`.""" return state_circuit.expval(operator)
[docs] def pauli_rot( self, state_circuit: CircuitMPS, generator: str, angle: float, max_bond_dimension: int, ): """Apply a Pauli rotation specified by `generator` and `angle` to the MPS.""" return state_circuit.pauli_rot(generator, angle)