Skip to content

Commit 5625f6e

Browse files
authored
Merge pull request #71 from EHTJulia/ptiede-polupdates
Loop for pol transform
2 parents f1e9333 + c18c784 commit 5625f6e

File tree

2 files changed

+52
-23
lines changed

2 files changed

+52
-23
lines changed

ext/VLBISkyModelsMakieExt.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ end
105105
colormap = :grayC,
106106
colorrange = Makie.automatic,
107107
pcolorrange=Makie.automatic,
108-
pcolormap=:coolwarm,
108+
pcolormap=Makie.Reverse(:RdBu),
109109
nvec = 30,
110110
min_frac = 0.1,
111111
min_pol_frac=0.2,
@@ -337,7 +337,7 @@ function Makie.plot!(plot::PolImage)
337337
pcm = lift(plot.pcolormap, plot.plot_total) do pc, pt
338338
(pc != Makie.automatic) && return pc
339339
if pt
340-
return :coolwarm
340+
return Makie.Reverse(:RdBu)
341341
else
342342
return :rainbow1
343343
end
@@ -408,7 +408,7 @@ function _imgviz!(fig, ax, img::IntensityMap{<:Real}; scale_length=fieldofview(i
408408
dkwargs = Dict(kwargs)
409409
crange = get(dkwargs, :colorrange, colorrange_default)
410410
delete!(dkwargs, :colorrange)
411-
cmap = get(dkwargs, :colormap, :magma)
411+
cmap = get(dkwargs, :colormap, :inferno)
412412
delete!(dkwargs, :colormap)
413413

414414
hm = heatmap!(ax, img; colorrange=crange, colormap=cmap, dkwargs...)

src/models/polarized.jl

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -255,12 +255,22 @@ The arguments are:
255255
256256
"""
257257
function PoincareSphere2Map(I, p, X, grid)
258-
pimgI = I .* p
259-
stokesI = I
260-
stokesQ = pimgI .* X[1]
261-
stokesU = pimgI .* X[2]
262-
stokesV = pimgI .* X[3]
263-
return stokes_intensitymap(stokesI, stokesQ, stokesU, stokesV, grid)
258+
Q = similar(I)
259+
U = similar(I)
260+
V = similar(I)
261+
262+
t1 = X[1]
263+
t2 = X[2]
264+
t3 = X[3]
265+
266+
@inbounds @simd for i in eachindex(I, Q, U, V)
267+
pI = I[i] * p[i]
268+
Q[i] = pI * t1[i]
269+
U[i] = pI * t2[i]
270+
V[i] = pI * t3[i]
271+
end
272+
273+
return stokes_intensitymap(I, Q, U, V, grid)
264274
end
265275

266276
# function PoincareSphere2Map(I, p, X, grid)
@@ -291,20 +301,39 @@ Each Stokes parameter is parameterized as
291301
292302
where `a,b,c,d` are real numbers with no conditions, and `p=√(a² + b² + c²)`.
293303
"""
294-
function PolExp2Map(a::AbstractArray, b::AbstractArray, c::AbstractArray, d::AbstractArray,
295-
grid::AbstractRectiGrid)
296-
p = sqrt.(b .^ 2 .+ c .^ 2 .+ d .^ 2)
297-
298-
tmp = exp.(a) .* sinh.(p) .* inv.(p)
299-
pimgI = exp.(a) .* cosh.(p)
300-
pimgQ = tmp .* b
301-
pimgU = tmp .* c
302-
pimgV = tmp .* d
303-
stokesI = pimgI
304-
stokesQ = pimgQ
305-
stokesU = pimgU
306-
stokesV = pimgV
307-
return stokes_intensitymap(stokesI, stokesQ, stokesU, stokesV, grid)
304+
@fastmath function PolExp2Map(a::AbstractArray,
305+
b::AbstractArray,
306+
c::AbstractArray,
307+
d::AbstractArray,
308+
grid::AbstractRectiGrid)
309+
pimgI = similar(a)
310+
pimgQ = similar(b)
311+
pimgU = similar(c)
312+
pimgV = similar(d)
313+
314+
# This is just faster because it is a 1 pass algorithm
315+
@inbounds @simd for i in eachindex(pimgI, pimgQ, pimgU, pimgV)
316+
p = sqrt(b[i]^2 + c[i]^2 + d[i]^2)
317+
ea = exp(a[i])
318+
tmp = ea * sinh(p) / p
319+
pimgI[i] = ea * cosh(p)
320+
pimgQ[i] = tmp * b[i]
321+
pimgU[i] = tmp * c[i]
322+
pimgV[i] = tmp * d[i]
323+
end
324+
325+
# p = @.. sqrt(b ^ 2 + c ^ 2 + d ^ 2)
326+
# ea = @.. exp(a)
327+
# tmp = @.. ea * sinh(p) * inv(p)
328+
# pimgI = @.. ea * cosh(p)
329+
# pimgQ = @.. tmp * b
330+
# pimgU = @.. tmp * c
331+
# pimgV = @.. tmp * d
332+
# stokesI = pimgI
333+
# stokesQ = pimgQ
334+
# stokesU = pimgU
335+
# stokesV = pimgV
336+
return stokes_intensitymap(pimgI, pimgQ, pimgU, pimgV, grid)
308337
end
309338

310339
"""

0 commit comments

Comments
 (0)