Signal Injection
The following functions are used for injecting fake signal into HCI data.
Index
API/Reference
HCIToolbox.inject — Functioninject(frame::AbstractMatrix, psf, [angle]; x, y, amp=1, center=center(frame), kwargs...)Injects the psf into frame at the given position.
Examples
inject works with two types of PSF models: matrices and synthetic models.
Matrices
If you pass an AbstractMatrix to inject, you can optionally specify degree and fill as keyword arguments. By default, degree=Interpolations.Linear() and fill=0. These are used to create an Interpolations.AbstractExtrapolation type which can be arbitrarily transformed. From here, the x, y, and amp arguments will determine the position and will be optionally rotated angle degrees counter-clockwise around the center.
julia> inject(zeros(5, 5), ones(1, 1); x=4, y=3, amp=2)
5×5 Matrix{Float64}:
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 2.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
julia> inject(zeros(5, 5), ones(3, 3), 90; x=4, y=3, amp=2)
5×5 Matrix{Float64}:
0.0 0.0 0.0 0.0 0.0
0.0 0.0 2.0 2.0 2.0
0.0 0.0 2.0 2.0 2.0
0.0 0.0 2.0 2.0 2.0
0.0 0.0 0.0 0.0 0.0Synthetic Models
The synthetic models from PSFModels.jl can easily be used, too. In this case, any additional keyword arguments are directly passed to the given model-
julia> using PSFModels
julia> inject(zeros(5, 5), gaussian; x=4, y=3, amp=2, fwhm=2)
5×5 Matrix{Float64}:
0.000244141 0.00195312 0.00390625 0.00195312 0.000244141
0.0078125 0.0625 0.125 0.0625 0.0078125
0.0625 0.5 1.0 0.5 0.0625
0.125 1.0 2.0 1.0 0.125
0.0625 0.5 1.0 0.5 0.0625
julia> inject(zeros(5, 5), airydisk, 45; x=4, y=3, amp=2, fwhm=2, ratio=0.3)
5×5 Matrix{Float64}:
0.042946 0.0944566 0.0741111 0.06456 0.0914308
0.0944566 0.0191043 0.054543 0.108174 0.00031632
0.0741111 0.054543 0.929442 1.29573 0.307196
0.06456 0.108174 1.29573 1.76798 0.470669
0.0914308 0.00031632 0.307196 0.470669 0.0620712inject(cube, psf, [angles]; x, y, amp=1, kwargs...)Injects the matrix psf into each frame of cube at the given position.
If angles are provided, each position will be rotated by the given parallactic angles in degrees, centered at center, which is the center of each frame, by default.
HCIToolbox.inject! — Functioninject!(cube, psf, [angles]; kwargs...)In-place version of inject which modifies cube.