Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
frequency of the filter used at each order (padded with NaNs).
- `'sigma'` : tensor
A Tensor of size `(C, max_order)`, specifying the frequency
bandwidth of the filter used at each order (padded with NaNs).
- `'j'` : tensor
A Tensor of size `(C, max_order)`, specifying the dyadic scale
of the filter used at each order (padded with NaNs).
- `'n'` : tensor
A Tensor of size `(C, max_order)`, specifying the indices of
the filters used at each order (padded with NaNs).
- `'key'` : list
The tuples indexing the corresponding scattering coefficient
in the non-vectorized output.
"""
sigma_low, xi1s, sigma1s, j1s, xi2s, sigma2s, j2s = \
calibrate_scattering_filters(J, Q)
meta = {}
meta['order'] = [[], [], []]
meta['xi'] = [[], [], []]
meta['sigma'] = [[], [], []]
meta['j'] = [[], [], []]
meta['n'] = [[], [], []]
meta['key'] = [[], [], []]
meta['order'][0].append(0)
meta['xi'][0].append(())
meta['sigma'][0].append(())
meta['j'][0].append(())
meta['n'][0].append(())
meta['key'][0].append(())
max_order : int, optional
The maximum order of scattering coefficients to compute.
Must be either equal to `1` or `2`. Defaults to `2`.
detail : boolean, optional
Specifies whether to provide a detailed size (number of coefficient
per order) or an aggregate size (total number of coefficients).
Returns
-------
size : int or tuple
If `detail` is `False`, returns the number of coefficients as an
integer. If `True`, returns a tuple of size `max_order` containing
the number of coefficients in each order.
"""
sigma_low, xi1, sigma1, j1, xi2, sigma2, j2 = \
calibrate_scattering_filters(J, Q)
size_order0 = 1
size_order1 = len(xi1)
size_order2 = 0
for n1 in range(len(xi1)):
for n2 in range(len(xi2)):
if j2[n2] > j1[n1]:
size_order2 += 1
if detail:
if max_order == 2:
return size_order0, size_order1, size_order2
else:
return size_order0, size_order1
else:
if max_order == 2:
return size_order0 + size_order1 + size_order2