Source code for seemps.typing
from __future__ import annotations
import numpy as np
from numpy.typing import NDArray, ArrayLike
import scipy.sparse as sp # type: ignore
from typing import Literal, TypeAlias, Annotated, TypeVar
Natural: TypeAlias = Annotated[int, ">=1"]
Float: TypeAlias = float | np.floating
Real: TypeAlias = float | int | np.floating | np.integer
Weight: TypeAlias = float | complex
"""A real or complex number."""
Unitary: TypeAlias = NDArray
"""Unitary matrix in :class:`numpy.ndarray` dense format."""
SparseOperator: TypeAlias = sp.csr_matrix | sp.bsr_matrix | sp.coo_matrix
"""An operator in sparse matrix format."""
DenseOperator: TypeAlias = (
np.ndarray[tuple[int, int], np.dtype[np.floating]]
| np.ndarray[tuple[int, int], np.dtype[np.complexfloating]]
)
"""An operator in :class:`numpy.ndarray` format."""
Operator: TypeAlias = DenseOperator | SparseOperator
"""An operator, either in :class:`np.ndarray` or sparse matrix format."""
FloatVector: TypeAlias = np.ndarray[tuple[int], np.dtype[np.floating]]
"""A one-dimensional :class:`numpy.ndarray` of real numbers."""
Vector: TypeAlias = NDArray
"""A one-dimensional :class:`numpy.ndarray` representing a wavefunction."""
VectorLike: TypeAlias = ArrayLike
"""Any Python type that can be coerced to `Vector` type."""
Matrix: TypeAlias = NDArray
""":class:`numpy.ndarray` tensor with two indices."""
Tensor3: TypeAlias = NDArray
""":class:`numpy.ndarray` tensor with three indices."""
Tensor4: TypeAlias = NDArray
""":class:`numpy.ndarray` tensor with four indices."""
Environment: TypeAlias = NDArray
"""Left or right environment represented as tensor."""
MPOEnvironment: TypeAlias = NDArray
"""Left or right environment of an MPS-MPO-MPS contraction."""
FloatOrArray = TypeVar("FloatOrArray", float, np.floating, int, NDArray[np.floating])
MPSOrder: TypeAlias = Literal["A", "B"]
[docs]
def to_dense_operator(O: Operator) -> DenseOperator:
if sp.issparse(O):
return O.toarray() # type: ignore
return O
__all__ = [
"NDArray",
"Float",
"Weight",
"Real",
"Vector",
"VectorLike",
"Operator",
"Unitary",
"FloatVector",
"DenseOperator",
"Tensor3",
"Tensor4",
"Environment",
"MPOEnvironment",
"to_dense_operator",
]