Skip to content
This repository was archived by the owner on Sep 28, 2024. It is now read-only.

Commit c36f48a

Browse files
committed
format code
1 parent f374e0a commit c36f48a

File tree

7 files changed

+225
-201
lines changed

7 files changed

+225
-201
lines changed

src/Transform/polynomials.jl

+81-72
Original file line numberDiff line numberDiff line change
@@ -16,47 +16,47 @@ function legendre_ϕ_ψ(k)
1616
p = Polynomial([-1, 2]) # 2x-1
1717
p2 = Polynomial([-1, 4]) # 4x-1
1818

19-
for ki in 0:(k-1)
19+
for ki in 0:(k - 1)
2020
l = convert(Polynomial, gen_poly(Legendre, ki)) # Legendre of n=ki
21-
ϕ_coefs[ki+1, 1:(ki+1)] .= sqrt(2*ki+1) .* coeffs(l(p))
22-
ϕ_2x_coefs[ki+1, 1:(ki+1)] .= sqrt(2*(2*ki+1)) .* coeffs(l(p2))
21+
ϕ_coefs[ki + 1, 1:(ki + 1)] .= sqrt(2 * ki + 1) .* coeffs(l(p))
22+
ϕ_2x_coefs[ki + 1, 1:(ki + 1)] .= sqrt(2 * (2 * ki + 1)) .* coeffs(l(p2))
2323
end
24-
24+
2525
ψ1_coefs = zeros(k, k)
2626
ψ2_coefs = zeros(k, k)
27-
for ki in 0:(k-1)
28-
ψ1_coefs[ki+1, :] .= ϕ_2x_coefs[ki+1, :]
29-
for i in 0:(k-1)
30-
a = ϕ_2x_coefs[ki+1, 1:(ki+1)]
31-
b = ϕ_coefs[i+1, 1:(i+1)]
27+
for ki in 0:(k - 1)
28+
ψ1_coefs[ki + 1, :] .= ϕ_2x_coefs[ki + 1, :]
29+
for i in 0:(k - 1)
30+
a = ϕ_2x_coefs[ki + 1, 1:(ki + 1)]
31+
b = ϕ_coefs[i + 1, 1:(i + 1)]
3232
proj_ = proj_factor(a, b)
33-
ψ1_coefs[ki+1, :] .-= proj_ .* view(ϕ_coefs, i+1, :)
34-
ψ2_coefs[ki+1, :] .-= proj_ .* view(ϕ_coefs, i+1, :)
33+
ψ1_coefs[ki + 1, :] .-= proj_ .* view(ϕ_coefs, i + 1, :)
34+
ψ2_coefs[ki + 1, :] .-= proj_ .* view(ϕ_coefs, i + 1, :)
3535
end
3636

37-
for j in 0:(k-1)
38-
a = ϕ_2x_coefs[ki+1, 1:(ki+1)]
39-
b = ψ1_coefs[j+1, :]
37+
for j in 0:(k - 1)
38+
a = ϕ_2x_coefs[ki + 1, 1:(ki + 1)]
39+
b = ψ1_coefs[j + 1, :]
4040
proj_ = proj_factor(a, b)
41-
ψ1_coefs[ki+1, :] .-= proj_ .* view(ψ1_coefs, j+1, :)
42-
ψ2_coefs[ki+1, :] .-= proj_ .* view(ψ2_coefs, j+1, :)
41+
ψ1_coefs[ki + 1, :] .-= proj_ .* view(ψ1_coefs, j + 1, :)
42+
ψ2_coefs[ki + 1, :] .-= proj_ .* view(ψ2_coefs, j + 1, :)
4343
end
4444

45-
a = ψ1_coefs[ki+1, :]
45+
a = ψ1_coefs[ki + 1, :]
4646
norm1 = proj_factor(a, a)
4747

48-
a = ψ2_coefs[ki+1, :]
49-
norm2 = proj_factor(a, a, complement=true)
48+
a = ψ2_coefs[ki + 1, :]
49+
norm2 = proj_factor(a, a, complement = true)
5050
norm_ = sqrt(norm1 + norm2)
51-
ψ1_coefs[ki+1, :] ./= norm_
52-
ψ2_coefs[ki+1, :] ./= norm_
51+
ψ1_coefs[ki + 1, :] ./= norm_
52+
ψ2_coefs[ki + 1, :] ./= norm_
5353
zero_out!(ψ1_coefs)
5454
zero_out!(ψ2_coefs)
5555
end
5656

57-
ϕ = [Polynomial(ϕ_coefs[i,:]) for i in 1:k]
58-
ψ1 = [Polynomial(ψ1_coefs[i,:]) for i in 1:k]
59-
ψ2 = [Polynomial(ψ2_coefs[i,:]) for i in 1:k]
57+
ϕ = [Polynomial(ϕ_coefs[i, :]) for i in 1:k]
58+
ψ1 = [Polynomial(ψ1_coefs[i, :]) for i in 1:k]
59+
ψ2 = [Polynomial(ψ2_coefs[i, :]) for i in 1:k]
6060

6161
return ϕ, ψ1, ψ2
6262
end
@@ -68,14 +68,14 @@ function chebyshev_ϕ_ψ(k)
6868
p = Polynomial([-1, 2]) # 2x-1
6969
p2 = Polynomial([-1, 4]) # 4x-1
7070

71-
for ki in 0:(k-1)
71+
for ki in 0:(k - 1)
7272
if ki == 0
73-
ϕ_coefs[ki+1, 1:(ki+1)] .= sqrt(2/π)
74-
ϕ_2x_coefs[ki+1, 1:(ki+1)] .= sqrt(4/π)
73+
ϕ_coefs[ki + 1, 1:(ki + 1)] .= sqrt(2 / π)
74+
ϕ_2x_coefs[ki + 1, 1:(ki + 1)] .= sqrt(4 / π)
7575
else
7676
c = convert(Polynomial, gen_poly(Chebyshev, ki)) # Chebyshev of n=ki
77-
ϕ_coefs[ki+1, 1:(ki+1)] .= 2/sqrt(π) .* coeffs(c(p))
78-
ϕ_2x_coefs[ki+1, 1:(ki+1)] .= sqrt(2) * 2/sqrt(π) .* coeffs(c(p2))
77+
ϕ_coefs[ki + 1, 1:(ki + 1)] .= 2 / sqrt(π) .* coeffs(c(p))
78+
ϕ_2x_coefs[ki + 1, 1:(ki + 1)] .= sqrt(2) * 2 / sqrt(π) .* coeffs(c(p2))
7979
end
8080
end
8181

@@ -87,43 +87,43 @@ function chebyshev_ϕ_ψ(k)
8787
# x_m[x_m==0.5] = 0.5 + 1e-8 # add small noise to avoid the case of 0.5 belonging to both phi(2x) and phi(2x-1)
8888
# not needed for our purpose here, we use even k always to avoid
8989
wm = π / k_use / 2
90-
90+
9191
ψ1_coefs = zeros(k, k)
9292
ψ2_coefs = zeros(k, k)
9393

94-
ψ1 = Array{Any,1}(undef, k)
95-
ψ2 = Array{Any,1}(undef, k)
94+
ψ1 = Array{Any, 1}(undef, k)
95+
ψ2 = Array{Any, 1}(undef, k)
9696

97-
for ki in 0:(k-1)
98-
ψ1_coefs[ki+1, :] .= ϕ_2x_coefs[ki+1, :]
99-
for i in 0:(k-1)
100-
proj_ = sum(wm .* ϕ[i+1].(x_m) .* sqrt(2) .* ϕ[ki+1].(2*x_m))
101-
ψ1_coefs[ki+1, :] .-= proj_ .* view(ϕ_coefs, i+1, :)
102-
ψ2_coefs[ki+1, :] .-= proj_ .* view(ϕ_coefs, i+1, :)
97+
for ki in 0:(k - 1)
98+
ψ1_coefs[ki + 1, :] .= ϕ_2x_coefs[ki + 1, :]
99+
for i in 0:(k - 1)
100+
proj_ = sum(wm .* ϕ[i + 1].(x_m) .* sqrt(2) .* ϕ[ki + 1].(2 * x_m))
101+
ψ1_coefs[ki + 1, :] .-= proj_ .* view(ϕ_coefs, i + 1, :)
102+
ψ2_coefs[ki + 1, :] .-= proj_ .* view(ϕ_coefs, i + 1, :)
103103
end
104104

105-
for j in 0:(ki-1)
106-
proj_ = sum(wm .* ψ1[j+1].(x_m) .* sqrt(2) .* ϕ[ki+1].(2*x_m))
107-
ψ1_coefs[ki+1, :] .-= proj_ .* view(ψ1_coefs, j+1, :)
108-
ψ2_coefs[ki+1, :] .-= proj_ .* view(ψ2_coefs, j+1, :)
105+
for j in 0:(ki - 1)
106+
proj_ = sum(wm .* ψ1[j + 1].(x_m) .* sqrt(2) .* ϕ[ki + 1].(2 * x_m))
107+
ψ1_coefs[ki + 1, :] .-= proj_ .* view(ψ1_coefs, j + 1, :)
108+
ψ2_coefs[ki + 1, :] .-= proj_ .* view(ψ2_coefs, j + 1, :)
109109
end
110110

111-
ψ1[ki+1] = ϕ_(ψ1_coefs[ki+1,:]; lb=0., ub=0.5)
112-
ψ2[ki+1] = ϕ_(ψ2_coefs[ki+1,:]; lb=0.5, ub=1.)
113-
114-
norm1 = sum(wm .* ψ1[ki+1].(x_m) .* ψ1[ki+1].(x_m))
115-
norm2 = sum(wm .* ψ2[ki+1].(x_m) .* ψ2[ki+1].(x_m))
116-
111+
ψ1[ki + 1] = ϕ_(ψ1_coefs[ki + 1, :]; lb = 0.0, ub = 0.5)
112+
ψ2[ki + 1] = ϕ_(ψ2_coefs[ki + 1, :]; lb = 0.5, ub = 1.0)
113+
114+
norm1 = sum(wm .* ψ1[ki + 1].(x_m) .* ψ1[ki + 1].(x_m))
115+
norm2 = sum(wm .* ψ2[ki + 1].(x_m) .* ψ2[ki + 1].(x_m))
116+
117117
norm_ = sqrt(norm1 + norm2)
118-
ψ1_coefs[ki+1, :] ./= norm_
119-
ψ2_coefs[ki+1, :] ./= norm_
118+
ψ1_coefs[ki + 1, :] ./= norm_
119+
ψ2_coefs[ki + 1, :] ./= norm_
120120
zero_out!(ψ1_coefs)
121121
zero_out!(ψ2_coefs)
122-
123-
ψ1[ki+1] = ϕ_(ψ1_coefs[ki+1,:]; lb=0., ub=0.5+1e-16)
124-
ψ2[ki+1] = ϕ_(ψ2_coefs[ki+1,:]; lb=0.5+1e-16, ub=1.)
122+
123+
ψ1[ki + 1] = ϕ_(ψ1_coefs[ki + 1, :]; lb = 0.0, ub = 0.5 + 1e-16)
124+
ψ2[ki + 1] = ϕ_(ψ2_coefs[ki + 1, :]; lb = 0.5 + 1e-16, ub = 1.0)
125125
end
126-
126+
127127
return ϕ, ψ1, ψ2
128128
end
129129

@@ -137,22 +137,26 @@ function legendre_filter(k)
137137
l = convert(Polynomial, gen_poly(Legendre, k))
138138
x_m = roots(l(Polynomial([-1, 2]))) # 2x-1
139139
m = 2 .* x_m .- 1
140-
wm = 1 ./ k ./ legendre_der.(k, m) ./ gen_poly(Legendre, k-1).(m)
141-
142-
for ki in 0:(k-1)
143-
for kpi in 0:(k-1)
144-
H0[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ϕ[ki+1].(x_m/2) .* ϕ[kpi+1].(x_m))
145-
G0[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ψ(ψ1, ψ2, ki, x_m/2) .* ϕ[kpi+1].(x_m))
146-
H1[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ϕ[ki+1].((x_m.+1)/2) .* ϕ[kpi+1].(x_m))
147-
G1[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ψ(ψ1, ψ2, ki, (x_m.+1)/2) .* ϕ[kpi+1].(x_m))
140+
wm = 1 ./ k ./ legendre_der.(k, m) ./ gen_poly(Legendre, k - 1).(m)
141+
142+
for ki in 0:(k - 1)
143+
for kpi in 0:(k - 1)
144+
H0[ki + 1, kpi + 1] = 1 / sqrt(2) *
145+
sum(wm .* ϕ[ki + 1].(x_m / 2) .* ϕ[kpi + 1].(x_m))
146+
G0[ki + 1, kpi + 1] = 1 / sqrt(2) *
147+
sum(wm .* ψ(ψ1, ψ2, ki, x_m / 2) .* ϕ[kpi + 1].(x_m))
148+
H1[ki + 1, kpi + 1] = 1 / sqrt(2) *
149+
sum(wm .* ϕ[ki + 1].((x_m .+ 1) / 2) .* ϕ[kpi + 1].(x_m))
150+
G1[ki + 1, kpi + 1] = 1 / sqrt(2) * sum(wm .* ψ(ψ1, ψ2, ki, (x_m .+ 1) / 2) .*
151+
ϕ[kpi + 1].(x_m))
148152
end
149153
end
150154

151155
zero_out!(H0)
152156
zero_out!(H1)
153157
zero_out!(G0)
154158
zero_out!(G1)
155-
159+
156160
return H0, H1, G0, G1, I(k), I(k)
157161
end
158162

@@ -172,14 +176,19 @@ function chebyshev_filter(k)
172176
# not needed for our purpose here, we use even k always to avoid
173177
wm = π / k_use / 2
174178

175-
for ki in 0:(k-1)
176-
for kpi in 0:(k-1)
177-
H0[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ϕ[ki+1].(x_m/2) .* ϕ[kpi+1].(x_m))
178-
H1[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ϕ[ki+1].((x_m.+1)/2) .* ϕ[kpi+1].(x_m))
179-
G0[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ψ(ψ1, ψ2, ki, x_m/2) .* ϕ[kpi+1].(x_m))
180-
G1[ki+1, kpi+1] = 1/sqrt(2) * sum(wm .* ψ(ψ1, ψ2, ki, (x_m.+1)/2) .* ϕ[kpi+1].(x_m))
181-
Φ0[ki+1, kpi+1] = 2*sum(wm .* ϕ[ki+1].(2x_m) .* ϕ[kpi+1].(2x_m))
182-
Φ1[ki+1, kpi+1] = 2*sum(wm .* ϕ[ki+1].(2 .* x_m .- 1) .* ϕ[kpi+1].(2 .* x_m .- 1))
179+
for ki in 0:(k - 1)
180+
for kpi in 0:(k - 1)
181+
H0[ki + 1, kpi + 1] = 1 / sqrt(2) *
182+
sum(wm .* ϕ[ki + 1].(x_m / 2) .* ϕ[kpi + 1].(x_m))
183+
H1[ki + 1, kpi + 1] = 1 / sqrt(2) *
184+
sum(wm .* ϕ[ki + 1].((x_m .+ 1) / 2) .* ϕ[kpi + 1].(x_m))
185+
G0[ki + 1, kpi + 1] = 1 / sqrt(2) *
186+
sum(wm .* ψ(ψ1, ψ2, ki, x_m / 2) .* ϕ[kpi + 1].(x_m))
187+
G1[ki + 1, kpi + 1] = 1 / sqrt(2) * sum(wm .* ψ(ψ1, ψ2, ki, (x_m .+ 1) / 2) .*
188+
ϕ[kpi + 1].(x_m))
189+
Φ0[ki + 1, kpi + 1] = 2 * sum(wm .* ϕ[ki + 1].(2x_m) .* ϕ[kpi + 1].(2x_m))
190+
Φ1[ki + 1, kpi + 1] = 2 * sum(wm .* ϕ[ki + 1].(2 .* x_m .- 1) .*
191+
ϕ[kpi + 1].(2 .* x_m .- 1))
183192
end
184193
end
185194

@@ -189,6 +198,6 @@ function chebyshev_filter(k)
189198
zero_out!(G1)
190199
zero_out!(Φ0)
191200
zero_out!(Φ1)
192-
201+
193202
return H0, H1, G0, G1, Φ0, Φ1
194203
end

src/Transform/utils.jl

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
function ϕ_(ϕ_coefs; lb::Real=0., ub::Real=1.)
1+
function ϕ_(ϕ_coefs; lb::Real = 0.0, ub::Real = 1.0)
22
function partial(x)
3-
mask = (lb x ub) * 1.
3+
mask = (lb x ub) * 1.0
44
return Polynomial(ϕ_coefs)(x) * mask
55
end
66
return partial
77
end
88

99
function ψ(ψ1, ψ2, i, inp)
1010
mask = (inp .> 0.5) .* 1.0
11-
return ψ1[i+1].(inp) .* mask .+ ψ2[i+1].(inp) .* mask
11+
return ψ1[i + 1].(inp) .* mask .+ ψ2[i + 1].(inp) .* mask
1212
end
1313

14-
zero_out!(x; tol=1e-8) = (x[abs.(x) .< tol] .= 0)
14+
zero_out!(x; tol = 1e-8) = (x[abs.(x) .< tol] .= 0)
1515

1616
function gen_poly(poly, n)
17-
x = zeros(n+1)
17+
x = zeros(n + 1)
1818
x[end] = 1
1919
return poly(x)
2020
end
2121

2222
function convolve(a, b)
2323
n = length(b)
24-
y = similar(a, length(a)+n-1)
24+
y = similar(a, length(a) + n - 1)
2525
for i in 1:length(a)
26-
y[i:(i+n-1)] .+= a[i] .* b
26+
y[i:(i + n - 1)] .+= a[i] .* b
2727
end
2828
return y
2929
end
3030

31-
function proj_factor(a, b; complement::Bool=false)
31+
function proj_factor(a, b; complement::Bool = false)
3232
prod_ = convolve(a, b)
3333
r = collect(1:length(prod_))
3434
s = complement ? (1 .- 0.5 .^ r) : (0.5 .^ r)
3535
proj_ = sum(prod_ ./ r .* s)
3636
return proj_
3737
end
3838

39-
_legendre(k, x) = (2k+1) * gen_poly(Legendre, k)(x)
39+
_legendre(k, x) = (2k + 1) * gen_poly(Legendre, k)(x)
4040

4141
function legendre_der(k, x)
4242
out = 0
43-
for i in k-1:-2:-1
43+
for i in (k - 1):-2:-1
4444
out += _legendre(i, x)
4545
end
4646
return out

src/Transform/wavelet_transform.jl

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
export WaveletTransform
22

3-
struct WaveletTransform{N, S}<:AbstractTransform
4-
ec_d
5-
ec_s
3+
struct WaveletTransform{N, S} <: AbstractTransform
4+
ec_d::Any
5+
ec_s::Any
66
modes::NTuple{N, S} # N == ndims(x)
77
end
88

99
Base.ndims(::WaveletTransform{N}) where {N} = N
1010

1111
function transform(wt::WaveletTransform, 𝐱::AbstractArray)
12-
N = size(X, ndims(wt)-1)
12+
N = size(X, ndims(wt) - 1)
1313
# 1d
1414
Xa = vcat(view(𝐱, :, :, 1:2:N, :), view(𝐱, :, :, 2:2:N, :))
1515
# 2d
@@ -24,9 +24,7 @@ function transform(wt::WaveletTransform, 𝐱::AbstractArray)
2424
return d, s
2525
end
2626

27-
function inverse(wt::WaveletTransform, 𝐱_fwt::AbstractArray)
28-
29-
end
27+
function inverse(wt::WaveletTransform, 𝐱_fwt::AbstractArray) end
3028

3129
# function truncate_modes(wt::WaveletTransform, 𝐱_fft::AbstractArray)
3230
# return view(𝐱_fft, map(d->1:d, wt.modes)..., :, :) # [ft.modes..., in_chs, batch]

0 commit comments

Comments
 (0)