foscat.BkBase#

Classes#

Module Contents#

class foscat.BkBase.BackendBase(name, mpi_rank=0, all_type='float64', gpupos=0, silent=False)[source]#
BACKEND#
mpi_rank = 0#
all_type = 'float64'#
gpupos = 0#
silent = False#
to_dict()[source]#
iso_mean(x, use_2D=False)[source]#
fft_ang(x, nharm=1, imaginary=False, use_2D=False)[source]#
calc_iso_orient(norient)[source]#
calc_iso_orient3(norient)[source]#

Build the averaging matrix for 3-orientation isotropic reduction (S4).

S4 has shape […, L1, L2, L3]. Under a global rotation by δ the three orientation indices shift together: l_k → (l_k + δ) mod L. The only rotationally-invariant quantities are the two relative angles

Δl12 = (l2 - l1) mod L Δl13 = (l3 - l1) mod L

The forward matrix (shape [L^3, L^2]) maps the flat (l1, l2, l3) index to the flat (Δl12, Δl13) index with weight 1/L:

output[Δl12, Δl13] = (1/L) Σ_{l1} input[l1, (l1+Δl12)%L, (l1+Δl13)%L]

The transpose matrix (shape [L^2, L^3], weight L·tmpᵀ) is the pseudo- inverse used by the repeat=True path to reconstruct a full […, L, L, L] tensor from the […, L, L] isotropic representation.

calc_fft_orient(norient, nharm, imaginary)[source]#
calc_fft_ang_orient(norient, nharm, imaginary)[source]#

Build projection matrices for the angular-FFT reduction of S3/S4.

Unlike the tensor-product _fft_2_orient / _fft_3_orient matrices (which apply independent 1-D FFTs on each orientation axis), these matrices first reindex (l1, l2) → (Δl, l1) and then project the l1 axis onto the Fourier basis, keeping the Δl (relative-orientation) axis intact.

Results#

_fft_ang2_orient[(norient, nharm, imaginary)]shape [L*L, L*nout]

Maps S3[l1, l2] (flat [L²]) → out[Δl, k] (flat [L*nout]) where Δl = (l2-l1) % L and k indexes the Fourier basis on l1.

_fft_ang3_orient[(norient, nharm, imaginary)]shape [L*L*L, L*L*nout]

Maps S4[l1, l2, l3] (flat [L³]) → out[Δl12, Δl13, k] (flat [L²*nout]) where Δl12 = (l2-l1)%L, Δl13 = (l3-l1)%L.

abstractmethod bk_len(S)[source]#
abstractmethod bk_SparseTensor(indice, w, dense_shape=[])[source]#
abstractmethod bk_stack(list, axis=0)[source]#
abstractmethod bk_sparse_dense_matmul(smat, mat)[source]#
abstractmethod conv2d(x, w, strides=[1, 1, 1, 1], padding='SAME')[source]#
abstractmethod conv1d(x, w, strides=[1, 1, 1], padding='SAME')[source]#
abstractmethod bk_threshold(x, threshold, greater=True)[source]#
abstractmethod bk_maximum(x1, x2)[source]#
abstractmethod bk_device(device_name)[source]#
abstractmethod bk_ones(shape, dtype=None)[source]#
abstractmethod bk_conv1d(x, w)[source]#
abstractmethod bk_flattenR(x)[source]#
abstractmethod bk_flatten(x)[source]#
abstractmethod bk_size(x)[source]#
abstractmethod bk_resize_image(x, shape)[source]#
abstractmethod bk_L1(x)[source]#
abstractmethod bk_square_comp(x)[source]#
abstractmethod bk_reduce_sum(data, axis=None)[source]#
abstractmethod bk_reduce_mean(data, axis=None)[source]#
abstractmethod bk_reduce_min(data, axis=None)[source]#
abstractmethod bk_random_seed(value)[source]#
abstractmethod bk_random_uniform(shape)[source]#
abstractmethod bk_reduce_std(data, axis=None)[source]#
abstractmethod bk_sqrt(data)[source]#
abstractmethod bk_abs(data)[source]#
abstractmethod bk_is_complex(data)[source]#
abstractmethod bk_distcomp(data)[source]#
abstractmethod bk_norm(data)[source]#
abstractmethod bk_square(data)[source]#
abstractmethod bk_log(data)[source]#
abstractmethod bk_matmul(a, b)[source]#
abstractmethod bk_tensor(data)[source]#
abstractmethod bk_shape_tensor(shape)[source]#
abstractmethod bk_complex(real, imag)[source]#
abstractmethod bk_exp(data)[source]#
abstractmethod bk_min(data)[source]#
abstractmethod bk_argmin(data)[source]#
abstractmethod bk_tanh(data)[source]#
abstractmethod bk_max(data)[source]#
abstractmethod bk_argmax(data)[source]#
abstractmethod bk_reshape(data, shape)[source]#
abstractmethod bk_repeat(data, nn, axis=0)[source]#
abstractmethod bk_tile(data, nn, axis=0)[source]#
abstractmethod bk_roll(data, nn, axis=0)[source]#
abstractmethod bk_expand_dims(data, axis=0)[source]#
abstractmethod bk_transpose(data, thelist)[source]#
abstractmethod bk_concat(data, axis=None)[source]#
abstractmethod bk_zeros(shape, dtype=None)[source]#
abstractmethod bk_gather(data, idx)[source]#
abstractmethod bk_reverse(data, axis=0)[source]#
abstractmethod bk_fft(data)[source]#
abstractmethod bk_fftn(data, dim=None)[source]#
abstractmethod bk_ifftn(data, dim=None, norm=None)[source]#
abstractmethod bk_rfft(data)[source]#
abstractmethod bk_irfft(data)[source]#
abstractmethod bk_conjugate(data)[source]#
abstractmethod bk_real(data)[source]#
abstractmethod bk_imag(data)[source]#
abstractmethod bk_relu(x)[source]#
abstractmethod bk_clip_by_value(x, xmin, xmax)[source]#
abstractmethod bk_cast(x)[source]#
abstractmethod bk_variable(x)[source]#
abstractmethod bk_assign(x, y)[source]#
abstractmethod bk_constant(x)[source]#
abstractmethod bk_cos(x)[source]#
abstractmethod bk_sin(x)[source]#
abstractmethod bk_arctan2(c, s)[source]#
abstractmethod bk_empty(list)[source]#
abstractmethod to_numpy(x)[source]#