pdft.bases.QFTBasis#

class pdft.bases.QFTBasis(m, n, tensors=None, code=None, inv_code=None)[source]#

Bases: object

QFT tensor-network basis. Mirror of ParametricDFT.jl/src/basis.jl::QFTBasis.

Stores ONE tensor list. inverse_transform applies conj(tensors) through inv_code — exactly like Julia’s inverse_transform(basis::QFTBasis, ...) which does basis.inverse_code(conj.(basis.tensors)..., ...).

code and inv_code are jit-compiled einsum closures and compare by identity; they are marked compare=False so the dataclass-generated __eq__ doesn’t consider them. Use bases_allclose for semantic comparison.

Pytree contract:

leaves = tensors (one list) aux data = (m, n, len(tensors), code, inv_code)

Parameters:
__init__(m, n, tensors=None, code=None, inv_code=None)[source]#
Parameters:

Methods

__init__(m, n[, tensors, code, inv_code])

forward_transform(pic)

inverse_transform(pic)

Attributes

image_size

inv_tensors

Julia stores one tensor list.

num_parameters

m

n

tensors

code

inv_code

m: int#
n: int#
tensors: list[Array]#
code: object#
inv_code: object#
property inv_tensors: list[Array]#

Julia stores one tensor list. The “inverse” is computed by applying conj(tensors) through inv_code. We expose this property so older callers that read basis.inv_tensors keep working — they get the same arrays as basis.tensors.

Type:

Back-compat alias

property image_size: tuple[int, int]#
property num_parameters: int#
forward_transform(pic)[source]#
Parameters:

pic (Array)

Return type:

Array

inverse_transform(pic)[source]#
Parameters:

pic (Array)

Return type:

Array