Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# Compute the minimum support to pad (ideally)
min_to_pad = compute_minimum_support_to_pad(
self.T, self.J, self.Q, r_psi=self.r_psi, sigma0=self.sigma0,
alpha=self.alpha, P_max=self.P_max, eps=self.eps,
criterion_amplitude=self.criterion_amplitude,
normalize=self.normalize)
# to avoid padding more than T - 1 on the left and on the right,
# since otherwise torch sends nans
J_max_support = int(np.floor(np.log2(3 * self.T - 2)))
self.J_pad = min(int(np.ceil(np.log2(self.T + 2 * min_to_pad))),
J_max_support)
# compute the padding quantities:
self.pad_left, self.pad_right = compute_padding(self.J_pad, self.T)
# compute start and end indices
self.ind_start, self.ind_end = compute_border_indices(
self.J, self.pad_left, self.pad_left + self.T)
# Finally, precompute the filters
phi_f, psi1_f, psi2_f, _ = scattering_filter_factory(
self.J_pad, self.J, self.Q, normalize=self.normalize,
criterion_amplitude=self.criterion_amplitude,
r_psi=self.r_psi, sigma0=self.sigma0, alpha=self.alpha,
P_max=self.P_max, eps=self.eps)
# prepare for pytorch
for k in phi_f.keys():
if type(k) != str:
# view(-1, 1).repeat(1, 2) because real numbers!
phi_f[k] = torch.from_numpy(
phi_f[k]).view(-1, 1).repeat(1, 2)
for psi_f in psi1_f:
for sub_k in psi_f.keys():
# Compute the minimum support to pad (ideally)
min_to_pad = compute_minimum_support_to_pad(
self.T, self.J, self.Q, r_psi=self.r_psi, sigma0=self.sigma0,
alpha=self.alpha, P_max=self.P_max, eps=self.eps,
criterion_amplitude=self.criterion_amplitude,
normalize=self.normalize)
# to avoid padding more than T - 1 on the left and on the right,
# since otherwise torch sends nans
J_max_support = int(np.floor(np.log2(3 * self.T - 2)))
self.J_pad = min(int(np.ceil(np.log2(self.T + 2 * min_to_pad))),
J_max_support)
# compute the padding quantities:
self.pad_left, self.pad_right = compute_padding(self.J_pad, self.T)
# compute start and end indices
self.ind_start, self.ind_end = compute_border_indices(
self.J, self.pad_left, self.pad_left + self.T)
phi_f, psi1_f, psi2_f, _ = scattering_filter_factory(
self.J_pad, self.J, self.Q, normalize=self.normalize,
criterion_amplitude=self.criterion_amplitude,
r_psi=self.r_psi, sigma0=self.sigma0, alpha=self.alpha,
P_max=self.P_max, eps=self.eps)
self.psi1_f = psi1_f
self.psi2_f = psi2_f
self.phi_f = phi_f
# Compute the minimum support to pad (ideally)
min_to_pad = compute_minimum_support_to_pad(
self.T, self.J, self.Q, r_psi=self.r_psi, sigma0=self.sigma0,
alpha=self.alpha, P_max=self.P_max, eps=self.eps,
criterion_amplitude=self.criterion_amplitude,
normalize=self.normalize)
# to avoid padding more than T - 1 on the left and on the right,
# since otherwise torch sends nans
J_max_support = int(np.floor(np.log2(3 * self.T - 2)))
self.J_pad = min(int(np.ceil(np.log2(self.T + 2 * min_to_pad))),
J_max_support)
# compute the padding quantities:
self.pad_left, self.pad_right = compute_padding(self.J_pad, self.T)
# compute start and end indices
self.ind_start, self.ind_end = compute_border_indices(
self.J, self.pad_left, self.pad_left + self.T)
phi_f, psi1_f, psi2_f, _ = scattering_filter_factory(
self.J_pad, self.J, self.Q, normalize=self.normalize,
criterion_amplitude=self.criterion_amplitude,
r_psi=self.r_psi, sigma0=self.sigma0, alpha=self.alpha,
P_max=self.P_max, eps=self.eps)
self.psi1_f = psi1_f
self.psi2_f = psi2_f
self.phi_f = phi_f