Cookbook
This page contains a few examples that demonstrate how to work with LibHealpix.jl. All of these examples should be preceded by using LibHealpix in order to load the package.
Creating a Map
In this example we will create a low-resolution Healpix map. We will number the pixels and visualize it in the terminal using the mollweide function to create a Mollweide projected image of the map.
julia> nside = 1 # lowest resolution map possible
map = RingHealpixMap(Int, nside)
map[:] = 1:length(map)
map
12-element LibHealpix.RingHealpixMap{Int64}:
1
2
3
4
5
6
7
8
9
10
11
12
julia> mollweide(map, (10, 20))
10×20 Array{Int64,2}:
0 0 0 0 0 0 2 2 1 1 4 4 3 3 0 0 0 0 0 0
0 0 0 2 2 2 1 1 1 1 4 4 4 4 3 3 3 0 0 0
0 7 2 2 2 6 1 1 1 1 4 4 4 4 8 3 3 3 7 0
7 2 2 2 6 6 1 1 1 5 5 4 4 4 8 8 3 3 3 7
7 7 2 6 6 6 6 1 5 5 5 5 4 8 8 8 8 3 7 7
7 7 10 6 6 6 6 9 5 5 5 5 12 8 8 8 8 11 7 7
7 10 10 10 6 6 9 9 9 5 5 12 12 12 8 8 11 11 11 7
0 7 10 10 10 6 9 9 9 9 12 12 12 12 8 11 11 11 7 0
0 0 0 10 10 10 9 9 9 9 12 12 12 12 11 11 11 0 0 0
0 0 0 0 0 0 10 10 9 9 12 12 11 11 0 0 0 0 0 0Spherical Harmonic Transforms
Spherical harmonic transforms are accomplished using the map2alm and alm2map functions. In this example we will create a map from its spherical harmonic coefficients using alm2map, and then compute its spherical harmonic coefficients with map2alm. In the latter step notice that we can obtain more accuracy by using more iterations.
julia> lmax = mmax = 1
alm = Alm(Complex128, lmax, mmax)
@lm alm[0, 0] = 1
@lm alm[1, 0] = 2
@lm alm[1, 1] = 0+3im
alm
3-element LibHealpix.Alm{Complex{Float64}}:
1.0+0.0im
2.0+0.0im
0.0+3.0im
julia> nside = 1
map = alm2map(alm, nside)
12-element LibHealpix.RingHealpixMap{Float64}:
2.02611
2.02611
-0.158984
-0.158984
0.282095
2.35506
0.282095
-1.79087
0.723173
0.723173
-1.46192
-1.46192
julia> new_alm = map2alm(map, lmax, mmax)
3-element LibHealpix.Alm{Complex{Float64}}:
1.0+0.0im
1.77778+0.0im
1.79636e-16+3.16667im
julia> new_alm = map2alm(map, lmax, mmax, iterations=3)
3-element LibHealpix.Alm{Complex{Float64}}:
1.0+0.0im
1.9997+0.0im
2.83224e-16+2.99997imFITS I/O
Healpix maps can be written to disk as a FITS image using the writehealpix function or read from disk using the readhealpix function. In this example we will generate a random Healpix map, write it to a temporary file, and then read it back from disk. The two maps should be identical.
julia> nside = 256
map = NestHealpixMap(Float64, nside)
map[:] = rand(length(map))
filename = tempname()*".fits"
writehealpix(filename, map)
new_map = readhealpix(filename)
map == new_map
trueIf you run into errors reading a FITS-formatted Healpix image, it may be the case that the map is stored in a way that is inconsistent with the format defined by libchealpix. You should be able to manually read in the map using FITSIO.jl. You will need to find the appropriate HDU and table column in the FITS file.