process_image
: processing an image
A standard analysis is performed using the process_image
task. This task reads in the input image, calculates background rms and mean images, finds islands of emission, fits Gaussians to the islands, and groups the Gaussians into sources. Furthermore, the process_image
task encompases a number of modules that allow decomposing an image into shapelets, calculating source spectral indices, deriving source polarization properties, and correcting for PSF variations across the image.
When process_image is executed, PyBDSF performs the following steps in order:
Reads in the image and collapses specific frequency channels with weights (see Multichannel options) and produces a ‘continuum’ image (the ch0 image) for all polarisations with which source detection is done.
Calculates basic statistics of the image and sensible values of the processing parameters. First, the number of beams per source is calculated (see Determining whether an image is confused for details), using a sensible estimate of box size and step size (which can be set using the rms_box parameter). Next, the thresholds are set. They can either be hard thresholded (by the user or set as 5-sigma for pixel threshold and 3-sigma for island boundaries by default) or can be calculated using the False Detection Rate (FDR) method using a user defined value for \(\alpha\) (the fdr_alpha parameter). If the user does not specify whether hard thresholding or FDR thresholding should be applied, one or the other is chosen internally based on the ratio of expected false pixels to true pixels.
Calculates the rms and mean images. The 3-sigma clipped rms and mean are calculated inside boxes of defined by the rms_box parameter. Optionally, these images can be calculated using adaptive scaling of this box, so that a smaller box (defined the the rms_box_bright parameter) is used near bright sources (where strong artifacts are more likely). Intermediate values are calculated using bicubic spline interpolation by default (the order of the spline interpolation can be set with the spline_rank parameter). Depending on the resulting statistics (see Determining whether an image is confused for details), we either adopt the rms image or a constant rms in the following analysis.
Identifies islands of contiguous emission. First all pixels greater than the pixel threshold are identified. Next, starting from each of these pixels, all contiguous pixels (defined by 8-connectivity, i.e., the surrounding eight pixels) higher than the island boundary threshold are identified as belonging to one island, accounting properly for overlaps of islands.
Fits multiple Gaussians to each island. The number of multiple Gaussians to be fit can be determined by three different methods (using the ini_gausfit parameter). With initial guesses corresponding to these peaks, Gaussians are simultaneously fit to the island using the Levenberg-Marqhardt algorithm. Sensible criteria for bad solutions are defined (see Flagging options). If multiple Gaussians are fit and one of them is a bad solution then the number of Gaussians is decreased by one and fit again, until all solutions in the island are good (or zero in number, in which case it’s flagged). After the final fit to the island, the deconvolved size is computed assuming the theoretical beam, and the statistics in the source area and in the island are computed and stored. Errors on each of the fitted parameters are computed using the formulae in Condon (1997) [1] and Condon et al. (1998) [2].
Groups nearby Gaussians within an island into sources. See Grouping of Gaussians into sources for details. Fluxes for the grouped Gaussians are summed to obtain the total flux of the source (the uncertainty is calculated by summing the Gaussian uncertainties in quadrature). The source position is set to be its centroid (the position of the maximum of the source is also calculated and output). The total source size is measured using moment analysis (see http://en.wikipedia.org/wiki/Image_moment for a nice overview of moment analysis). Errors on the source position and size are estimated using Condon (1997) and Condon et al. (1998), but additional uncertainties due to uncertainties in the constituent Gaussians may be estimated using a Monte Carlo technique.
Continues with further processing, if the user has specified that one or more of the following modules be used:
Shapelet decomposition (see Shapelet decomposition module for details)
Wavelet decomposition (see À trous wavelet decomposition module for details)
Estimation of PSF variation (see PSF variation module for details)
Calculation of polarization properties (see Polarization module for details)
Calculation of spectral indices (see Spectral index module for details)
General reduction parameters
Type inp process_image
to list the main reduction parameters:
PROCESS_IMAGE: Find and measure sources in an image. ================================================================================ filename ................. '': Input image file name adaptive_rms_box ..... False : Use adaptive rms_box when determining rms and mean maps advanced_opts ........ False : Show advanced options atrous_do ............ False : Decompose Gaussian residual image into multiple scales beam .................. None : FWHM of restoring beam. Specify as (maj, min, pos ang E of N) in degrees. E.g., beam = (0.06, 0.02, 13.3). None => get from header flagging_opts ........ False : Show options for Gaussian flagging frequency ............. None : Frequency in Hz of input image. E.g., frequency = 74e6. None => get from header. For more than one channel, use the frequency_sp parameter. interactive .......... False : Use interactive mode mean_map .......... 'default': Background mean map: 'default' => calc whether to use or not, 'zero' => 0, 'const' => clipped mean, 'map' => use 2-D map. multichan_opts ....... False : Show options for multi-channel images output_opts .......... False : Show output options polarisation_do ...... False : Find polarisation properties psf_vary_do .......... False : Calculate PSF variation across image rms_box ............... None : Box size, step size for rms/mean map calculation. Specify as (box, step) in pixels. E.g., rms_box = (40, 10) => box of 40x40 pixels, step of 10 pixels. None => calculate inside program rms_map ............... None : Background rms map: True => use 2-D rms map; False => use constant rms; None => calculate inside program shapelet_do .......... False : Decompose islands into shapelets spectralindex_do ..... False : Calculate spectral indices (for multi-channel image) thresh ................ None : Type of thresholding: None => calculate inside program, 'fdr' => use false detection rate algorithm, 'hard' => use sigma clipping thresh_isl ............. 3.0 : Threshold for the island boundary in number of sigma above the mean. Determines extent of island used for fitting thresh_pix ............. 5.0 : Source detection threshold: threshold for the island peak in number of sigma above the mean. If false detection rate thresholding is used, this value is ignored and thresh_pix is calculated inside the program
Each of the parameters is described in detail below.
- filename
This parameter is a string (no default) that sets the input image file name. The input image can be a FITS or CASA 2-, 3-, or 4-D cube.
- adaptive_rms_box
This parameter is a Boolean (default is
False
). IfTrue
, an adaptive box is used when calculating the rms and mean maps. See Adaptive box options for details of the options.- advanced_opts
This parameter is a Boolean (default is
False
). IfTrue
, the advanced options are shown. See Advanced options for details of the advanced options.- atrous_do
This parameter is a Boolean (default is
False
). IfTrue
, wavelet decomposition will be performed. See À trous wavelet decomposition module for details of the options.- beam
This parameter is a tuple (default is
None
) that defines the FWHM of restoring beam. Specify as (maj, min, pos ang E of N) in degrees. E.g.,beam = (0.06, 0.02, 13.3)
. For more than one channel, use thebeam_spectrum
parameter. If the beam is not given by the user, then it is looked for in the image header. If not found, then an error is raised. PyBDSF will not work without knowledge of the restoring beam.- flagging_opts
This parameter is a Boolean (default is
False
). IfTrue
, the Gaussian flagging options will be listed. See Flagging options for details of the options.- frequency
This parameter is a float (default is
None
) that defines the frequency in Hz of the input image. E.g.,frequency = 74e6
. For more than one channel, use the frequency_sp parameter. If the frequency is not given by the user, then it is looked for in the image header. If not found, then an error is raised. PyBDSF will not work without knowledge of the frequency.- interactive
This parameter is a Boolean (default is
False
). IfTrue
, interactive mode is used. In interactive mode, plots are displayed at various stages of the processing so that the user may check the progress of the fit.First, plots of the rms and mean background images are displayed along with the islands found, before fitting of Gaussians takes place. The user should verify that the islands and maps are reasonable before preceding.
Next, if
atrous_do = True
, the fits to each wavelet scale are shown. The wavelet fitting may be truncated at the current scale if desired.Lastly, the final results are shown.
- mean_map
This parameter is a string (default is
'default'
) that determines how the background mean map is computed and how it is used further.If
'const'
, then the value of the clipped mean of the entire image (set by thekappa_clip
option) is used as the background mean map.If
'zero'
, then a value of zero is used.If
'map'
, then the 2-dimensional mean map is computed and used. The resulting mean map is largely determined by the value of therms_box
parameter (see therms_box
parameter for more information).If
'default'
, then PyBDSF will attempt to determine automatically whether to use a 2-dimensional map or a constant one as follows. First, the image is assumed to be confused ifbmpersrc_th
< 25 or the ratio of the clipped mean to rms (clipped mean/clipped rms) is > 0.1, else the image is not confused. Next, the mean map is checked to see if its spatial variation is significant. If so, then a 2-D map is used and, if not, then the mean map is set to either 0.0 or a constant depending on whether the image is thought to be confused or not.Generally,
'default'
works well. However, if there is significant extended emission in the image, it is often necessary to force the use of a constant mean map using either'const'
or'mean'
.- multichan_opts
This parameter is a Boolean (default is
False
). IfTrue
, the multichannel options will be listed. See Multichannel options for details of the options.- output_opts
This parameter is a Boolean (default is
False
). IfTrue
, the output options will be listed. See Output options for details of the options.- polarisation_do
This parameter is a Boolean (default is
False
). IfTrue
, polarization properties will be calculated for the sources. See Polarization module for details of the options.- psf_vary_do
This parameter is a Boolean (default is
False
). IfTrue
, the spatial variation of the PSF will be estimated and its effects corrected. See PSF variation module for details of the options.- rms_box
This parameter is a tuple (default is
None
) of two integers and is probably the most important input parameter for PyBDSF. The first integer, boxsize, is the size of the 2-D sliding box for calculating the rms and mean over the entire image. The second, stepsize, is the number of pixels by which this box is moved for the next measurement. IfNone
, then suitable values are calculated internally.In general, it is best to choose a box size that corresponds to the typical scale of artifacts in the image, such as those that are common around bright sources. Too small of a box size will effectively raise the local rms near a source so much that a source may not be fit at all; too large a box size can result in underestimates of the rms due to oversmoothing. A step size of 1/3 to 1/4 of the box size usually works well.
Note
The spline_rank parameter also affects the rms and mean maps. If you find ringing artifacts in the rms or mean maps near bright sources, try adjusting this parameter.
- rms_map
This parameter is a Boolean (default is
None
). IfTrue
, then the 2-D background rms image is computed and used. IfFalse
, then a constant value is assumed (userms_value
to force the rms to a specific value). IfNone
, then the 2-D rms image is calculated, and if the variation is statistically significant then it is taken, else a constant value is assumed. The rms image used for each channel in computing the spectral index follows what was done for the channel-collapsed image.Generally, the default value works well. However, if there is significant extended emission in the image, it is often necessary to force the use of a constant rms map by setting
rms_map = False
.- shapelet_do
This parameter is a Boolean (default is
False
). IfTrue
, shapelet decomposition of the islands will be performed. See Shapelet decomposition module for details of the options.- spectralindex_do
This parameter is a Boolean (default is
False
). IfTrue
, spectral indices will be calculated for the sources. See Spectral index module for details of the options.- thresh
This parameter is a string (default is
None
). Ifthresh = 'hard'
, then a hard threshold is assumed, given by thresh_pix. Ifthresh = 'fdr'
, then the False Detection Rate algorithm of Hopkins et al. (2002) is used to calculate the value ofthresh_pix
. Ifthresh = None
, then the false detection probability is first calculated, and if the number of false source pixels is more thanfdr_ratio
times the estimated number of true source pixels, then the'fdr'
threshold option is chosen, else the'hard'
threshold option is chosen.- thresh_isl
This parameter is a float (default is 3.0) that determines the region to which fitting is done. A higher value will produce smaller islands, and hence smaller regions that are considered in the fits. A lower value will produce larger islands. Use the thresh_pix parameter to set the detection threshold for sources. Generally,
thresh_isl
should be lower thanthresh_pix
.Only regions above the absolute threshold will be used. The absolute threshold is calculated as
abs_thr = mean + thresh_isl * rms
. Use themean_map
andrms_map
parameters to control the way the mean and rms are determined.- thresh_pix
This parameter is a float (default is 5.0) that sets the source detection threshold in number of sigma above the mean. If false detection rate thresholding is used, this value is ignored and
thresh_pix
is calculated inside the programThis parameter sets the overall detection threshold for islands (i.e.
thresh_pix = 5
will find all sources with peak flux densities per beam of 5-sigma or greater). Use thethresh_isl
parameter to control how much of each island is used in fitting. Generally,thresh_pix
should be larger thanthresh_isl
.Only islands with peaks above the absolute threshold will be used. The absolute threshold is calculated as
abs_thr = mean + thresh_pix * rms
. Use themean_map
andrms_map
parameters to control the way the mean and rms are determined.
Adaptive box options
If adaptive_rms_box = True
, the rms_box is reduced in size near bright sources and enlarged far from them. This scaling attempts to account for possible strong artifacts around bright sources while still acheiving accurate background rms and mean values when extended sources are present. This option is generally slower than non-adaptive scaling.
Use the rms_box
parameter to set the large-scale box and the rms_box_bright
parameter to set the small-scale box. The threshold for bright sources can be set with the adaptive_thresh
parameter:
adaptive_rms_box ...... True : Use adaptive rms_box when determining rms and mean maps adaptive_thresh ..... None : Sources with pixels above adaptive_thresh* clipped_rms will be considered as bright sources (i.e., with potential artifacts). None => calculate inside program rms_box_bright ...... None : Box size, step size for rms/mean map calculation near bright sources. Specify as (box, step) in pixels. None => calculate inside program
- adaptive_thresh
This parameter is a float (default is
None
) that sets the SNR above which sources may be affected by strong artifacts Sources that meet the SNR threshold will use the small-scale box (set by therms_box_bright
parameter) if their sizes at a threshold of 10.0 is less than 25 beam areas.If None, the threshold is varied from 500 to 50 to attempt to obtain at least 5 candidate bright sources.
- rms_box_bright
This parameter is a tuple (default is
None
) of two integers that sets the box and step sizes to use near bright sources (determined by theadaptive_thresh
parameter). The large-scale box size is set with therms_box
parameter.
Advanced options
If advanced_opts = True
, a number of additional options are listed. The advanced options do not usually need to be altered from the default values, but can be useful, for example, for fine tuning a fit or for quickly fitting a small region of a much larger image.
The advanced options are:
advanced_opts ......... True : Show advanced options aperture ............ None : Radius of aperture in pixels inside which aperture fluxes are measured for each source. None => no aperture fluxes measured aperture_posn .. 'centroid': Position the aperture (if aperture is not None) on: 'centroid' or 'peak' of the source. blank_limit ......... None : Limit in Jy/beam below which pixels are blanked. None => no such blanking is done bmpersrc_th ......... None : Theoretical estimate of number of beams per source. None => calculate inside program check_outsideuniv .. False : Check for pixels outside the universe detection_image ........ '': Detection image file name used only for detecting islands of emission. Source measurement is still done on the main image do_cache ........... False : Cache internally derived images to disk do_mc_errors ....... False : Estimate uncertainties for 'M'-type sources using Monte Carlo method fdr_alpha ........... 0.05 : Alpha for FDR algorithm for thresholds fdr_ratio ............ 0.1 : For thresh = None; if #false_pix / #source_pix < fdr_ratio, thresh = 'hard' else thresh = 'fdr' fittedimage_clip ..... 0.1 : Sigma for clipping Gaussians while creating fitted image fix_to_beam ........ False : Fix major and minor axes and PA of Gaussians to beam? group_by_isl ....... False : Group all Gaussians in each island into a single source group_method .. 'intensity': Group Gaussians into sources using 'intensity' map or 'curvature' map group_tol ............ 1.0 : Tolerance for grouping of Gaussians into sources: larger values will result in larger sources ini_gausfit ..... 'default': Initial guess for Gaussian parameters: 'default', 'fbdsm', or 'nobeam' ini_method .... 'intensity': Method by which inital guess for fitting of Gaussians is chosen: 'intensity' or 'curvature' kappa_clip ........... 3.0 : Kappa for clipped mean and rms maxpix_isl .......... None : Maximum number of pixels with emission per island. None -> no limit minpix_isl .......... None : Minimum number of pixels with emission per island. None -> calculate inside program ncores .............. None : Number of cores to use during fitting, None => use all peak_fit ............ True : Find and fit peaks of large islands before fitting entire island peak_maxsize ........ 30.0 : If island size in beam area is more than this, attempt to fit peaks separately (if peak_fit=True). Min value is 30 rmsmean_map_filename None : Filenames of FITS files to use as the mean and rms maps, given as a list [<mean_map.fits>, <rms_map.fits>] rmsmean_map_filename_det None : Filenames of FITS files to use as the mean and rms maps when a detection image is specified, given as a list [<mean_map.fits>, <rms_map.fits>] rms_value ........... None : Value of constant rms in Jy/beam to use if rms_map = False. None => calculate inside program spline_rank ............ 3 : Rank of the interpolating function for rms/mean map split_isl ........... True : Split island if it is too large, has a large convex deficiency and it opens well. If it doesn't open well, then isl.mean = isl.clipped_mean, and is taken for fitting. Splitting, if needed, is always done for wavelet images splitisl_maxsize .... 50.0 : If island size in beam area is more than this, consider splitting island. Min value is 50 src_ra_dec .......... None : List of source positions at which fitting is done. E.g., src_ra_dec = [(197.1932, 47.9188), (196.5573, 42.4852)]. src_radius_pix ...... None : Radius of the island (if src_ra_dec is not None) in pixels. None => radius is set to the FWHM of the beam major axis. stop_at ............. None : Stops after: 'isl' = island finding step or 'read' = image reading step trim_box ............ None : Do source detection on only a part of the image. Specify as (xmin, xmax, ymin, ymax) in pixels. E.g., trim_box = (120, 840, 15, 895). None => use entire image
- aperture
This parameter is a float (default is
None
) that sets the radius (in pixels) inside which the aperture flux is measured for each source. The aperture is centered on the either the centroid or the peak of the source (depending on the value of theaperture_posn
option). Errors are calculated from the mean of the rms map inside the aperture.- aperture_posn
This parameter is a string (default is
'centroid'
) that sets the how the aperture is positioned relative to the source. If ‘centroid’, the aperture is centered on the source centroid. If ‘peak’, the aperture is centered on the source peak. If aperture=None (i.e., no aperture radius is specified), this parameter is ignored.- blank_limit
This parameter is a float (default is
None
) that sets the limit in Jy/beam below which pixels are blanked. All pixels in the ch0 image with a value less than the specified limit and with at least 4 neighboring pixels with values also less than this limit are blanked. IfNone
, any such pixels are left unblanked (and hence will affect the rms and mean maps, etc.). Pixels with a value of NaN are always blanked.- bmpersrc_th
This parameter is a float (default is
None
) that sets the theoretical estimate of number of beams per source. IfNone
, the value is calculated as N/[n*(alpha-1)], where N is the total number of pixels in the image, n is the number of pixels in the image whose value is greater than 5 times the clipped rms, and alpha is the slope of the differential source counts distribution, assumed to be 2.5.The value of
bmpersrc_th
is used to estimate the average separation in pixels between two sources, which in turn is used to estimate the boxsize for calculating the background rms and mean images. In addition, if the value is below 25 (or the ratio of clipped mean to clipped rms of the image is greater than 0.1), the image is assumed to be confused and hence the background mean is put to zero.- check_outsideuniv
This parameter is a Boolean (default is
False
). IfTrue
, then the coordinate of each pixel is examined to check if it is outside the universe, which may happen when, e.g., an all sky image is made with SIN projection (commonly done at LOFAR earlier). When found, these pixels are blanked (since imaging software do not do this on their own). Note that this process takes a lot of time, as every pixel is checked in case weird geometries and projections are used.- detection_image
This parameter is a string (default is
''
) that sets the detection image file name used only for detecting islands of emission. Source measurement is still done on the main image. The detection image can be a FITS or CASA 2-, 3-, or 4-D cube and must have the same size and WCS parameters as the main image.- do_cache
This parameter is a Boolean (default is
False
) that controls whether internally derived images are stored in memory or are cached to disk. Caching can reduce the amount of memory used, and is therefore useful when analyzing large images.- do_mc_errors
This parameter is a Boolean (default is
False
). IfTrue
, uncertainties on the sizes and positions of ‘M’-type sources due to uncertainties in the constituent Gaussians are estimated using a Monte Carlo technique. These uncertainties are added in quadrature with those calculated using Condon (1997). IfFalse
, these uncertainties are ignored, and errors are calculated using Condon (1997) only.Enabling this option will result in longer run times if many ‘M’-type sources are present, but should give better estimates of the uncertainites, particularly for complex sources composed of many Gaussians.
- fdr_alpha
This parameter is a float (default is 0.05) that sets the value of alpha for the FDR algorithm for thresholding. If
thresh
is'fdr'
, then the estimate offdr_alpha
(see Hopkins et al. 2002 [3] for details) is stored in this parameter.- fdr_ratio
This parameter is a float (default is 0.1). When
thresh = None
, if #false_pix / #source_pix < fdr_ratio,thresh = 'hard'
otherwisethresh = 'fdr'
.- fittedimage_clip
This parameter is a float (default is 0.1). When the residual image is being made after Gaussian decomposition, the model images for each fitted Gaussian are constructed up to a size 2b, such that the amplitude of the Gaussian falls to a value of
fitted_image_clip
times the local rms, b pixels from the peak.- fix_to_beam
This parameter is a Boolean (default is
False
). If True, then during fitting the major and minor axes and PA of the Gaussians are fixed to the beam. Only the amplitude and position are fit. If False, all parameters are fit. Note that when this option is activated, as a consequence of using fewer free parameters, the estimated errors on the peak and total flux densities are a factor of sqrt(2) lower compared to the case in which all parameters are fit (see Condon 1997). Additionally, the reported errors on the major and minor axes and the PA are zero.- group_by_isl
This parameter is a Boolean (default is
False
). If True, all Gaussians in the island belong to a single source. If False, grouping is controlled by the group_tol parameter.- group_method
This parameter is a string (default is
'intensity'
). Gaussians are deemed to be a part of the same source if: (1) no pixel on the line joining the centers of any pair of Gaussians has a (Gaussian-reconstructed) value less than the island threshold, and (2) the centers are separated by a distance less than half the sum of their FWHMs along the line joining them. If'curvature'
, the above comparisons are done on the curature map (see Hancock et al. 2012). If'intensity'
, the comparisons are done on the intensity map.- group_tol
This parameter is a float (default is 1.0) that sets the tolerance for grouping of Gaussians into sources: larger values will result in larger sources. Sources are created by grouping nearby Gaussians as follows: (1) If the difference between the minimum value between two Gaussians and the lower of the peak flux densities of the Gaussians in an island is less than
group_tol * thresh_isl * rms_clip
, and (2) if the centers are separated by a distance less than0.5 * group_tol
of the sum of their FWHMs along the PA of the line joining them, they belong to the same island.- ini_gausfit
This parameter is a string (default is
'default'
). These are three different ways of estimating the initial guess for fitting of Gaussians to an island of emission. If'default'
, the maximum number of Gaussians is estimated from the number of peaks in the island. An initial guess is made for the parameters of these Gaussians before final fitting is done. This method should produce the best results when there are no large sources present. If'simple'
, the maximum number of Gaussians per island is set to 25, and no initial guess for the Gaussian parameters is made. Lastly, the'nobeam'
method is similar to the'default'
method, but no information about the beam is used. This method is best used when source sizes are expected to be very different from the beam and is generally slower than the other methods. For wavelet images, the value used for the original image is used for wavelet order j <= 3 and'nobeam'
for higher orders.- ini_method
This parameter is a string (default is
'intensity'
). If'intensity'
, the inital guess described in the help for theini_gausfit
parameter is calculated using the intensity (ch0) image. If'curvature'
, it is done using the curvature map (see Hancock et al. 2012).- kappa_clip
This parameter is a float (default is 3.0) that is the factor used for Kappa-alpha clipping, as in AIPS. For an image with few source pixels added on to (Gaussian) noise pixels, the dispersion of the underlying noise will need to be determined. This is done iteratively, whereby the actual dispersion is first computed. Then, all pixels whose value exceeds kappa clip times this rms are excluded and the rms is computed again. This process is repeated until no more pixels are excluded. For well behaved noise statistics, this process will converge to the true noise rms with a value for this parameter ~3-5. A large fraction of source pixels, less number of pixels in total, or significant non-Gaussianity of the underlying noise will all lead to non-convergence.
- maxpix_isl
This parameter is an integer (default is
None
) that sets the maximum number of pixels in an island for the island to be included. IfNone
, there is no limit.- minpix_isl
This parameter is an integer (default is
None
) that sets the minimum number of pixels in an island for the island to be included. IfNone
, the number of pixels is set to 1/3 of the area of an unresolved source using the beam and pixel size information in the image header. It is set to 6 pixels for all wavelet images.- ncores
This parameter is an integer (default is
None
) that sets the number of cores to use during fitting. IfNone
, all available cores are used (one core is reserved for plotting).- peak_fit
This parameter is a Boolean (default is
True
). When True, PyBDSF will identify and fit peaks of emission in large islands iteratively (the size of islands for which peak fitting is done is controlled with the peak_maxsize option), using a maximum of 10 Gaussians per iteration. Enabling this option will generally speed up fitting (by factors of many for large islands), but may result in somewhat higher residuals.- peak_maxsize
This parameter is a float (default is 30.0). If island size in beam area is more than this value, attempt to fit peaks iteratively (if
peak_fit = True
). The minimum value is 30.- rmsmean_map_filename
This parameter is a list (default is
None
) that sets the filenames of FITS files to use as the mean and rms maps, given as a list [<mean_map.fits>, <rms_map.fits>]. If supplied, the internally generated mean and rms maps are not used.- rmsmean_map_filename_det
This parameter is a list (default is
None
) that sets the filenames of FITS files to use as the mean and rms maps when a detection image is specified, given as a list [<mean_map.fits>, <rms_map.fits>]. If supplied, the internally generated mean and rms maps are not used.- rms_value
This parameter is a float (default is
None
) that sets the value of constant rms in Jy/beam to use ifrms_map = False
. IfNone
, the value is calculated inside the program.- spline_rank
This parameter is an integer (default is 3) that sets the order of the interpolating spline function to interpolate the background rms and mean maps over the entire image.
Note
Bicubic interpolation (the default) can cause ringing artifacts to appear in the rms and mean maps in regions where sharp changes occur. These artifacts can result in regions with negative values. If you find such artifacts, try changing the spline_rank parameter.
- split_isl
This parameter is a Boolean (default is
True
). IfTrue
, an island is split if it is too large, has a large convex deficiency and it opens well. If it doesn’t open well, thenisl.mean = isl.clipped_mean
, and is taken for fitting. Splitting, if needed, is always done for wavelet images- splitisl_maxsize
This parameter is a float (default is 50.0). If island size in beam area is more than this, consider splitting island. The minimum value is 50.
- src_ra_dec
This parameter is a list of tuples (default is
None
) that defines the center positions at which fitting will be done. The size of the region used for the fit is given by thesrc_radius_pix
parameter. Positions should be given as a list of RA and Dec, in degrees, one set per source. These positions will override the normal island finding module.- src_radius_pix
This parameter is a float (default is
None
) that determines the size of the region used to fit the source positions specified by thesrc_ra_dec
parameter. IfNone
, the radius is set to the FWHM of the beam major axis.- stop_at
This parameter is a string (default is
None
) that stops an analysis after: ‘isl’ = island finding step or ‘read’ = image reading step.- trim_box
This parameter is a tuple (default is
None
) that defines a subregion of the image on which to do source detection. It is specified as (xmin, xmax, ymin, ymax) in pixels. E.g.,trim_box = (120, 840, 15, 895)
. IfNone
, the entire image is used.
Flagging options
If flagging_opts = True
, a number of options are listed for flagging unwanted Gaussians that occur durring a fit. Flagged Gaussians are not included in any further analysis or catalog. They may be viewed using the show_fit
task (see show_fit: visualizing the fit results). A flag value is associated with each flagged Gaussian that allows the user to determine the reason or reasons that it was flagged. If multiple flagging conditions are met by a single Gaussian, the flag values are summed. For example, if a Gaussian is flagged because it is too large (its size exceeds that implied by flag_maxsize_bm
, giving a flag value of 64) and because it is too bright (its peak flux density per beam exceeds that implied by flag_maxsnr
, giving a flag value of 2) then the final flag value is 64 + 2 = 66.
Note
If a fit did not produce good results, it is often useful to check whether there are flagged Gaussians and adjust the flagging options as necessary. Flagged Gaussians can be viewed by setting ch0_flagged = True
in the show_fit
task.
The options for flagging of Gaussians are:
flagging_opts ......... True : Show options for Gaussian flagging flag_bordersize ........ 0 : Flag Gaussian if centre is outside border - flag_bordersize pixels flag_maxsize_bm ..... 25.0 : Flag Gaussian if area greater than flag_maxsize_bm times beam area flag_maxsize_isl ..... 1.0 : Flag Gaussian if x, y bounding box around sigma-contour is factor times island bbox flag_maxsnr .......... 1.5 : Flag Gaussian if peak is greater than flag_maxsnr times max value in island flag_minsize_bm ...... 0.7 : Flag Gaussian if flag_smallsrc = True and area smaller than flag_minsize_bm times beam area flag_minsnr .......... 0.9 : Flag Gaussian if peak is less than flag_minsnr times thresh_pix times local rms flag_smallsrc ...... False : Flag sources smaller than flag_minsize_bm times beam area
- flag_bordersize
This parameter is an integer (default is 0). Any fitted Gaussian whose centre is
flag_bordersize
pixels outside the island bounding box is flagged. The flag value is increased by 4 (for x) and 8 (for y).- flag_maxsize_bm
This parameter is a float (default is 25.0). Any fitted Gaussian whose size is greater than
flag_maxsize_bm
times the synthesized beam is flagged. The flag value is increased by 64.- flag_maxsize_fwhm
This parameter is a float (default is 0.3). Any fitted Gaussian whose contour of
flag_maxsize_fwhm
times the FWHM falls outside the island is flagged. The flag value is increased by 256.- flag_maxsize_isl
This parameter is a float (default is 1.0). Any fitted Gaussian whose maximum x-dimension is larger than
flag_maxsize_isl
times the x-dimension of the island (and likewise for the y-dimension) is flagged. The flag value is increased by 16 (for x) and 32 (for y).- flag_maxsnr
This parameter is a float (default is 1.5). Any fitted Gaussian whose peak is greater than
flag_maxsnr
times the value of the image at the peak of the Gaussian is flagged. The flag value is increased by 2.- flag_minsize_bm
This parameter is a float (default is 0.7). If
flag_smallsrc
is True, then any fitted Gaussian whose size is less thanflag_maxsize_bm
times the synthesized beam is flagged. The Gaussian flag is increased by 128.- flag_minsnr
This parameter is a float (default is 0.7). Any fitted Gaussian whose peak is less than
flag_minsnr
timesthresh_pix
times the local rms is flagged. The flag value is increased by 1.- flag_smallsrc
This parameter is a Boolean (default is
False
). IfTrue
, then fitted Gaussians whose size is less thanflag_minsize_bm
times the synthesized beam area are flagged. When combining Gaussians into sources, an error is raised if a 2x2 box with the peak of the Gaussian does not have all four pixels belonging to the source. Usually this means that the Gaussian is an artifact or has a very small size.If
False
, then if either of the sizes of the fitted Gaussian is zero, then the Gaussian is flagged.If the image is barely Nyquist sampled, this flag is best set to
False
. This flag is automatically set toFalse
while decomposing wavelet images into Gaussians.
Output options
If output_opts = True
, options to control the output generated by process_image
are listed. By default, only a log file is generated and output is controlled with the export_image
(see export_image: exporting internally derived images) and write_catalog
(see write_catalog: writing source catalogs) tasks. However, the user can specify that a number of optional output files be made automatically whenever process_image
is run. These options are most useful for debugging or when running PyBDSF non-interactively in a Python script (see Scripting PyBDSF).
The output options are:
output_opts ........... True : Show output options bbs_patches ......... None : For BBS format, type of patch to use: None => no patches. 'single' => all Gaussians in one patch. 'gaussian' => each Gaussian gets its own patch. 'source' => all Gaussians belonging to a single source are grouped into one patch. 'mask' => use mask file specified by bbs_patches_mask bbs_patches_mask .... None : Name of the mask file (of same size as input image) that defines the patches if bbs_patches = 'mask' indir ............... None : Directory of input FITS files. None => get from filename opdir_overwrite .. 'overwrite': 'overwrite'/'append': If output_all=True, delete existing files or append a new directory outdir .............. None : Directory to use for all output files (including log files). None => parent directory of the input filename output_all ......... False : Write out all files automatically to directory 'outdir/filename_pybdsf' plot_allgaus ....... False : Make a plot of all Gaussians at the end plot_islands ....... False : Make separate plots of each island during fitting (for large images, this may take a long time and a lot of memory) print_timing ....... False : Print basic timing information quiet .............. False : Suppress text output to screen. Output is still sent to the log file as usual savefits_det_meanim False : Save detection background mean image as fits file savefits_det_rmsim . False : Save detection background rms image as fits file savefits_meanim .... False : Save background mean image as fits file savefits_modelim ... False : Save Gaussian model image as fits file savefits_normim .... False : Save norm image as fits file savefits_rankim .... False : Save island rank image as fits file savefits_residim ... False : Save residual image as fits file savefits_rmsim ..... False : Save background rms image as fits file solnname ............ None : Name of the run, to be appended to the name of the output directory verbose_fitting .... False : Print out extra information during fitting
- bbs_patches
This parameter is a string (default is
None
) that sets the type of patch to use in BBS-formatted catalogs. When the Gaussian catalogue is written as a BBS-readable sky file, this option determines whether all Gaussians are in a single patch ('single'
), there are no patches (None
), all Gaussians for a given source are in a separate patch ('source'
), each Gaussian gets its own patch ('gaussian'
), or a mask image is used to define the patches ('mask'
).If you wish to have patches defined by island, then set
group_by_isl = True
before fitting to force all Gaussians in an island to be in a single source. Then setbbs_patches = 'source'
when writing the catalog.- bbs_patches_mask
This parameter is a string (default is
None
) that sets the file name of the mask file to use to define patches in BBS-formatted catalogs. The mask image should be 1 inside the patches and 0 elsewhere and should be the same size as the input image (before anytrim_box
is applied). Any Gaussians that fall outside of the patches will be ignored and will not appear in the output sky model.- indir
This parameter is a string (default is
None
) that sets the directory of input FITS files. IfNone
, the directory is defined by the input filename.- opdir_overwrite
This parameter is a string (default is
'overwrite'
) that determines whether existing output files are overwritten or not.- outdir
This parameter is a string (default is
None
) that sets the directory to use for all output files (including log files). IfNone
, the parent directory of the input image filename is used.- output_all
This parameter is a Boolean (default is
False
). IfTrue
, all output products are written automatically to the directory'outdir/filename_pybdsf'
.- plot_allgaus
This parameter is a Boolean (default is
False
). IfTrue
, make a plot of all Gaussians at the end.- plot_islands
This parameter is a Boolean (default is
False
). IfTrue
, make separate plots of each island during fitting (for large images, this may take a long time and a lot of memory).- print_timing
This parameter is a Boolean (default is
False
). IfTrue
, print basic timing information.- quiet
This parameter is a Boolean (default is
False
). IfTrue
, suppress text output to screen. Output is still sent to the log file as usual.- savefits_det_rmsim
This parameter is a Boolean (default is
False
). IfTrue
, save detection background rms image as a FITS file.- savefits_det_meanim
This parameter is a Boolean (default is
False
). IfTrue
, save detection background mean image as a FITS file.- savefits_meanim
This parameter is a Boolean (default is
False
). IfTrue
, save background mean image as a FITS file.- savefits_modelim
This parameter is a Boolean (default is
False
). IfTrue
, save Gaussian model image as a FITS file.- savefits_normim
This parameter is a Boolean (default is
False
). IfTrue
, save norm image as a FITS file.- savefits_rankim
This parameter is a Boolean (default is
False
). IfTrue
, save island rank image as a FITS file.- savefits_residim
This parameter is a Boolean (default is
False
). IfTrue
, save residual image as a FITS file.- savefits_rmsim
This parameter is a Boolean (default is
False
). IfTrue
, save background rms image as a FITS file.- solnname
This parameter is a string (default is
None
) that sets the name of the run, to be appended to the name of the output directory.- verbose_fitting
This parameter is a Boolean (default is
False
). IfTrue
, print out extra information during fitting.
Multichannel options
If multichan_opts = True
, the options used to control the way PyBDSF handles images with more than one frequency channel are listed. In particular, these options control how the multichannel image is collapsed to form the ch0
image on which source detection is done.
The options concerning multichannel images are:
multichan_opts ........ True : Show options for multi-channel images beam_sp_derive ...... True : If True and beam_spectrum is None, then assume header beam is for lowest frequency and scales with frequency for channels beam_spectrum ....... None : FWHM of synthesized beam per channel. Specify as [(bmaj_ch1, bmin_ch1, bpa_ch1), (bmaj_ch2, bmin_ch2, bpa_ch2), etc.] in degrees. E.g., beam_spectrum = [(0.01, 0.01, 45.0), (0.02, 0.01, 34.0)] for two channels. None => all equal to beam collapse_av ........... [] : List of channels to average if collapse_mode = 'average'; None => all collapse_ch0 ........... 0 : Number of the channel for source extraction, if collapse_mode = 'single' collapse_mode ... 'average': Collapse method: 'average' or 'single'. Average channels or take single channel to perform source detection on collapse_wt ....... 'unity': Weighting: 'unity' or 'rms'. Average channels with weights = 1 or 1/rms_clip^2 if collapse_mode = 'average' frequency_sp ........ None : Frequency in Hz of channels in input image when more than one channel is present. E.g., frequency = [74e6, 153e6]. None => get from header
- beam_sp_derive
This parameter is a Boolean (default is
True
). If True and the parameter beam_spectrum isNone
and no channel-dependent beam parameters are found in the header, then we assume that the beam in the header is for the lowest frequency of the image cube and scale accordingly to calculate the beam per channel. IfFalse
, then a constant value of the beam (that given in the header or specified with thebeam
parameter) is taken instead.Note
This parameter is used only in the Spectral index module module.
- beam_spectrum
This parameter is a list of tuples (default is
None
) that sets the FWHM of synthesized beam per channel. Specify as [(bmaj_ch1, bmin_ch1, bpa_ch1), (bmaj_ch2, bmin_ch2, bpa_ch2), etc.] in degrees. E.g.,beam_spectrum = [(0.01, 0.01, 45.0), (0.02, 0.01, 34.0)]
for two channels.If
None
, then the channel-dependent restoring beam is searched for in the header. If not found, the beam is either assumed to be a constant or to scale with frequency, depending on whether the parameterbeam_sp_derive
isFalse
orTrue
.Note
This parameter is used only in the Spectral index module module. For normal fitting (outside of the spectral index module), a constant value of the beam (that given in the header or specified with the
beam
parameter) is taken instead.- collapse_av
This parameter is a list of integers (default is
[]
) that specifies the channels to be averaged to produce the continuum image for performing source extraction, ifcollapse_mode
is'average'
. If the value is[]
, then all channels are used. Otherwise, the value is a Python list of channel numbers.- collapse_ch0
This parameter is an integer (default is 0) that specifies the number of the channel for source extraction, if
collapse_mode = 'single'
.- collapse_mode
This parameter is a string (default is
'average'
) that determines whether, when multiple channels are present, the source extraction is done on a single channel ('single'
) or an average of many channels ('average'
).- collapse_wt
This parameter is a string (default is
'unity'
). Whencollapse_mode
is'average'
, then if this value is'unity'
, the channels given bycollapse_av
are averaged with unit weights and if'rms'
, then they are averaged with weights which are inverse square of the clipped rms of each channel image.- frequency_sp
This parameter is a list of floats (default is
None
) that sets the frequency in Hz of channels in input image when more than one channel is present. E.g.,frequency_sp = [74e6, 153e6]
.If the frequency is not given by the user, then it is looked for in the image header. If not found, then an error is raised. PyBDSF will not work without the knowledge of the frequency.
À trous wavelet decomposition module
If atrous_do = True
, this module decomposes the residual image that results from the normal fitting of Gaussians into wavelet images of various scales. Such a decomposition is useful if there is extended emission that is not well fit during normal fitting. Such emission therefore remains in the Gaussian residual image and can be further fit by Gaussians whose size is tuned to the various wavelet scales. Therefore, wavelet decomposition should be used when there is significant residual emission that remains after normal Gaussian fitting.
The wavelet module performs the following steps:
The number of wavelet scales to be considered is set by the
atrous_jmax
parameter. By default, this number is determined automatically from the size of the largest island in the image. Wavelet images are then made for scales of order (j) ranging from 1 to jmax.For each scale (j), the appropriate à trous wavelet transformation is made (see Holschneider et al. 1989 for details). Additionally, the “remainder” image (called the c_J image) is also made. This image includes all emission not included in the other wavelet images.
Depending on the value of the
atrous_sum
option, fitting is done to either an image that is a sum over all scales equal to or larger than the scale under consideration (atrous_sum = True
) or to an image of a single scale (atrous_sum = False
). Fitting to the sum over all larger scales will generally result in increased signal to noise.If
atrous_bdsm = True
, an rms map and a mean map are made for each wavelet image and Gaussians are fit in the normal way. Gaussians can be optionally restricted to lie within islands found from the initial image. If a wavelet island overlaps spatially with an existing island, the two islands are merged together to form a single island. The wavelet Gaussians can then be included in source catalogs (see write_catalog: writing source catalogs).
The options for this module are as follows:
atrous_do ............. True : Decompose Gaussian residual image into multiple scales atrous_bdsm_do ...... True : Perform source extraction on each wavelet scale atrous_jmax ............ 0 : Max allowed wavelength order, 0 => calculate inside program atrous_lpf ........... 'b3': Low pass filter, either 'b3' or 'tr', for B3 spline or Triangle atrous_orig_isl .... False : Restrict wavelet Gaussians to islands found in original image atrous_sum .......... True : Fit to the sum of images of the remaining wavelet scales use_scipy_fft ....... True : Use fast SciPy FFT for convolution
- atrous_bdsm_do
This parameter is a Boolean (default is
False
). IfTrue
, PyBDSF performs source extraction on each wavelet scale.- atrous_jmax
This parameter is an integer (default is 0) which is the maximum order of the à trous wavelet decomposition. If 0 (or <0 or >15), then the value is determined within the program. The value of this parameter is then estimated as the (lower) rounded off value of ln[(nm-l)/(l-1) + 1]/ln2 + 1 where nm is the minimum of the residual image size (n, m) in pixels and l is the length of the filter à trous lpf (see the
atrous_lpf
parameter for more info).A sensible value is such that the size of the kernel is not more than 3-4 times smaller than the smallest image dimension.
- atrous_lpf
This parameter is a string (default is
'b3'
) that sets the low pass filter, which can be either the B3 spline or the triangle function, which is used to generate the à trous wavelets. The B3 spline is [1, 4, 6, 4, 1] and the triangle is [1, 2, 1], normalised so that the sum is unity. The lengths of the filters are hence 5 and 3 respectively.- atrous_orig_isl
This parameter is a Boolean (default is
False
). IfTrue
, all wavelet Gaussians must lie within the boundaries of islands found in the original image. IfFalse
, new islands that are found only in the wavelet images are included in the final fit.- atrous_sum
This parameter is a Boolean (default is
True
). IfTrue
, fitting is done on an image that is the sum of the remaining wavelet scales. Using the sum will generally result in improved signal. IfFalse
, fitting is done on only the wavelet scale under consideration.- use_scipy_fft
This parameter is a Boolean (default is
True
). IfTrue
, the SciPy FFT function will be used instead of the custom version. The SciPy version is much faster but also uses much more memory.
PSF variation module
If psf_vary_do = True
, then the spatial variations in the PSF are estimated and their effects corrected for. To this end, PyBDSF performs the following steps:
A list of sources that are likely to be unresolved is constructed. This is done by first selecting only type ‘S’ sources by default (see Definition of output columns for details of source types), but this restriction can be overridden using the
psf_stype_only
option) and sources with SNRs that exceedpsf_snrcut
. Next, a function is fit to determine how the size of sources (normalized by the median size) varies with the SNR. The function used is defined as \(\sigma / median = \sqrt(c_1^2 + c_2^2/SNR^2)\), where \(\sigma\) is the size of the Gaussian and \(c_1\) and \(c_2\) are free parameters. Clipping of outliers is done during this fitting, controlled by thepsf_nsig
parameter. Lastly, unresolved sources are selected by choosing sources that lie withinpsf_kappa2
times the rms of this best-fit sigma-SNR relation. As this last step can be unreliable for high-SNR sources, an additional selection can be made for the highest SNR sources using thepsf_high_snr
parameter. All sources with SNRs abovepsf_high_snr
will be taken as unresolved.Next the image is tessellated using Voronoi tessellation to produce tiles within which the PSF shape is calculated (and assumed to be constant). The list of probable unresolved sources is filtered to select “calibrator” sources to use to determine the tessellation tiles. These sources are the brightest sources (known as the primary generators), defined as those sources that have SNRs in the top fraction of sources defined by
psf_snrtop
and that also have SNRs greater thanpsf_snrcutstack
. These sources are then grouped by their proximity, if they are within 50% of the distance to third closest source.The unresolved sources within each tile that have SNRs greater than
psf_snrcutstack
are then stacked to form a high-SNR PSF. For each tile, this PSF is fit with a Gaussian to recover its size. The significance of the variation in the sizes across the image is quantified.If the variation is significant, the major axis, minor axis, and position angle are then interpolated across the image. Smoothing can be applied to these images to smooth out artifacts due to noise and the interpolation. Additionally, images are made of the ratio of peak-to-total flux and peak-to-aperture flux (if an aperture is specified). These ratio images provide conversions from total flux to peak flux for point sources. In the absence of smearing effects, these ratios should be around unity. However, if ionospheric effects are present, significant smearing can be present. In this case, these ratio images can be useful, for example, in determining the sensitivity at a particular location in the image to a point source with a given total flux.
Lastly, the deconvolved source sizes are adjusted to include the PSF variation as a function of position.
The options for this module are as follows:
psf_vary_do ........... True : Calculate PSF variation across image psf_high_snr ........ None : SNR above which all sources are taken to be unresolved. E.g., psf_high_snr = 20.0. None => no such selection is made psf_itess_method ....... 0 : 0 = normal, 1 = 0 + round, 2 = LogSNR, 3 = SqrtLogSNR psf_kappa2 ........... 2.0 : Kappa for clipping for analytic fit psf_nsig ............. 3.0 : Kappa for clipping within each bin psf_over ............... 2 : Factor of nyquist sample for binning bmaj, etc. vs SNR psf_smooth .......... None : Size of Gaussian to use for smoothing of interpolated images in arcsec. None => no smoothing psf_snrcut .......... 10.0 : Minimum SNR for statistics psf_snrcutstack ..... 15.0 : Unresolved sources with higher SNR taken for stacked psfs psf_snrtop .......... 0.15 : Fraction of SNR > snrcut as primary generators psf_stype_only ...... True : Restrict sources used in PSF variation estimating to be only of type 'S'
- psf_high_snr
This parameter is a float (default is
None
). Gaussians with SNR greater than this are used to determine the PSF variation, even if they are deemed to be resolved. This corrects for the unreliability at high SNRs in the algorithm used to find unresolved sources. The minimum value is 20.0. IfNone
, then no such selection is made.- psf_itess_method
This parameter is an integer (default is 0) which can be 0, 1, 2 or 3, which corresponds to a tessellation method. If 0, 2 or 3, then the weights used for Voronoi tessellation are unity, log(SNR) and sqrt[log(SNR)] where SNR is the signal to noise ratio of the generator in a tile. If 1, then the image is tessellated such that each tile has smooth boundaries instead of straight lines, using pixel-dependent weights.
- psf_kappa2
This parameter is a float (default is 2.0). When iteratively arriving at a statistically probable set of ‘unresolved’ sources, the fitted major and minor axis sizes versus SNR are binned and fitted with analytical functions. Those Gaussians which are within
psf_kappa2
times the fitted rms from the fitted median are then considered ‘unresolved’ and are used further to estimate the PSFs.- psf_nsig
This parameter is a float (default is 3.0). When constructing a set of ‘unresolved’ sources for psf estimation, the (clipped) median, rms and mean of major and minor axis sizes of Gaussians versus SNR within each bin is calculated using
kappa = psf_nsig
.- psf_over
This parameter is an integer (default is 2). When constructing a set of ‘unresolved’ sources for psf estimation, this parameter controls the factor of nyquist sample for binning bmaj, etc. vs SNR.
- psf_smooth
This parameter is a float (default is
None
) that sets the smoothing scale (in arcsec) used to smooth the interpolated images. Generally, artifacts due to noise and the interpolation can be significantly reduced if the smoothing scale is similar to the typical source separation scale.- psf_snrcut
This parameter is a float (default is 10.0). Only Gaussians with SNR greater than this are considered for processing. The minimum value is 5.0
- psf_snrcutstack
This parameter is a float (default is 15.0). Only Gaussians with SNR greater than this are used for estimating PSF images in each tile.
- psf_snrtop
This parameter is a float (default is 0.15). If
psf_generators
is ‘calibrator’, then the peak pixels of Gaussians which are thepsf_snrtop
fraction of the SNR distribution are taken as Voronoi generators.- psf_stype_only
This parameter is a Boolean (default is
False
). IfTrue
, sources are restricted to be only of type ‘S’.
Spectral index module
If spectralindex_do = True
(and the input image has more than one frequency), then spectral indices are calculated for the sources in the following way:
The rms maps for the remaining channels are determined.
Neighboring channels are averaged to attempt to obtain the target SNR per channel for a given source, set by the
specind_snr
parameter.Note
No color corrections are applied during averaging. However, unless the source spectral index is very steep or the channels are very wide, the correction is minimal. See Effect of neglecting color corrections for details.
Flux densities are measured for both individual Gaussians and for total sources. Once source flux densities have been measured in each channel, the SEDs are fit with the following power-law model: \(S_\nu \propto \nu^\alpha\), where \(\alpha\) is the spectral index. The resulting best-fit spectral index is then included in any catalogs that are written out (see write_catalog: writing source catalogs). In addition, plots of the fits can be viewed with the
show_fit
task (see show_fit: visualizing the fit results).
The options for this module are as follows:
spectralindex_do ...... True : Calculate spectral indices (for multi-channel image) flagchan_list ......... [] : List of channels to flag before (averaging and) extracting spectral index flagchan_rms ........ True : Flag channels before (averaging and) extracting spectral index, if their rms if more than 5 (clipped) sigma outside the median rms over all channels, but only if <= 10% of channels flagchan_snr ........ True : Flag channels that do not meet SNR criterion set by specind_snr specind_maxchan ........ 0 : Maximum number of channels to average for a given source when when attempting to meet target SNR. 1 => no averaging; 0 => no maximum specind_snr .......... 3.0 : Target SNR to use when fitting power law. If there is insufficient SNR, neighboring channels are averaged to obtain the target SNR
- flagchan_list
This parameter is a list of integers (default is
[]
) that specifies the channels to flag before (averaging and) extracting the spectral indices. Flagged channels will not be used during fitting. If the value is an empty list ([]
), then all channels are used. Otherwise, the value is a Python list of channel numbers, starting from 0 (i.e., the first channel has number 0, the second has number 1, etc.).- flagchan_rms
This parameter is a Boolean (default is
True
). IfTrue
, then the clipped rms and median (r and m) of the clipped rms of each channel is calculated. Those channels whose clipped rms is greater than 4r away from m are flagged prior to averaging and calculating spectral indices from the image cube. However, these channels are flagged only if the total number of these bad channels does not exceed 10% of the total number of channels themselves.- flagchan_snr
This parameter is a Boolean (default is
True
). IfTrue
, then flux densities in channels that do not meet the target SNR are not used in fitting.- specind_maxchan
This parameter is an integer (default is 0) that sets the maximum number of channels that can be averaged together to attempt to reach the target SNR set by the
specind_snr
parameter. If 0, there is no limit to the number of channels that can be averaged. If 1, no averaging will be done.- specind_snr
This parameter is a float (default is 3.0) that sets the target SNR to use when fitting for the spectral index. If there is insufficient SNR, neighboring channels are averaged to obtain the target SNR. The maximum allowable number of channels to average is determined by the
specind_maxchan
parameter. Channels (after averaging) that fail to meet the target SNR are not used in fitting.
Polarization module
If polarisation_do = True
, then the polarization properties of the sources are calculated. First, if pi_fit = True
, source detection is performed on the polarized intensity (PI) image [4] to detect sources without Stokes I counterparts. The polarization module then calculates the I, Q, U, and V flux densities, the total, linear, and circular polarisation fractions and the linear polarisation angle of each Gaussian and source. The linear polarisation angle is defined from North, with positive angles towards East. Flux densities are calculated by fitting the normalization of the Gaussians found using the Stokes I or PI images.
For linearly polarised emission, the signal and noise add vectorially, giving a Rice distribution instead of a Gaussian one. To correct for this, a bias is estimated and removed from the polarisation fraction using the same method used for the NVSS catalog (see ftp://ftp.cv.nrao.edu/pub/nvss/catalog.ps). Errors on the linear and total polarisation fractions and polarisation angle are estimated using the debiased polarised flux density and standard error propagation. See Sparks & Axon (1999) [5] for a more detailed treatment.
The options for this module are as follows:
polarisation_do ....... True : Find polarisation properties pi_fit .............. True : Check the polarized intesity (PI) image for sources not found in Stokes I pi_thresh_isl ....... None : Threshold for PI island boundary in number of sigma above the mean. None => use thresh_isl pi_thresh_pix ....... None : Source detection threshold for PI image: threshold for the island peak in number of sigma above the mean. None => use thresh_pix
- pi_fit
This parameter is a Boolean (default is
True
). IfTrue
, the polarized intensity image is searched for sources not present in the Stokes I image. If any such sources are found, they are added to the the Stokes I source lists. Use thepi_thresh_pix
andpi_thresh_isl
parameters to control island detection in the PI image.- pi_thresh_isl
This parameter is a float (default is
None
) that determines the region to which fitting is done in the polarized intensity (PI) image. IfNone
, the value is set to that of thethresh_isl
parameter. A higher value will produce smaller islands, and hence smaller regions that are considered in the fits. A lower value will produce larger islands. Use thepi_thresh_pix
parameter to set the detection threshold for sources. Generally,pi_thresh_isl
should be lower thanpi_thresh_pix
.- pi_thresh_pix
This parameter is a float (default is
None
) that sets the overall detection threshold for islands in the polarized intensity (PI) image (i.e. pi_thresh_pix = 5 will find all sources with peak flux densities per beam of 5-sigma or greater). IfNone
, the value is set to that of thethresh_pix
parameter. Use thepi_thresh_isl
parameter to control how much of each island is used in fitting. Generally,pi_thresh_pix
should be larger thanpi_thresh_isl
.
Shapelet decomposition module
If shapelet_do = True
, then islands are decomposed into shapelets. Shapelets are a set of 2-D basis functions (for details, see Refregier 2003 [6]) that can be used to completely model any source, typically with far fewer parameters than pixels in the source. Shapelets are useful in particular for modeling complex islands that are not well modeled by Gaussians alone. PyBDSF can currently fit cartesian shapelets to an image. The shapelet parameters can be written to a catalog using write_catalog
(see write_catalog: writing source catalogs).
For each island of emission, a shapelet decomposition is done after estimating the best values of the center, the scale \(\beta\), and nmax in the following way. First, an initial guess of \(\beta\) is taken as \(2\sqrt{[m2(x)m2(y)]}\), where \(m2\) is the second moment over the island, based on shapeelt analysis of simulated images of resolved sources. Similarly, a guess for nmax is taken as the minimum of 14, and maximum of 10 and \(2n + 2\) where \(n=\sqrt{(n^2 + m^2)}/n_p^n - 1\), where (n, m) is the size of the island and \(n^m_p\) is the synthesized beam minor axis FWHM in pixels. This guess for nmax is based partly on simulations and partly on the requirememts of computing time, number of constraints, etc, for shapelet decomposition.
These initial values are then used to calculate the optimal central position around which to decompose the island. First, for every pixel in the island, the coefficients c12 and c21 are computed assuming that pixel as the centre of expansion. Next, the zero crossings for every vertical line of the c12 image and horizontal line of the c21 image are computed. The intersection point of these two zero-crossing vectors is then taken as the proper centre of the expansion for the image. If this procedure does not work, then the first moment is taken as the center.
This updated center position is used to compute the optimal \(\beta\), which is taken as the value of \(\beta\) that minimises the residual rms in the island area. Using this \(\beta\), the center is computed once more and the final shapelet deocmposition is then made.
The options for this module are as follows:
shapelet_do ........... True : Decompose islands into shapelets shapelet_basis .. 'cartesian': Basis set for shapelet decomposition: 'cartesian' or 'polar' shapelet_fitmode .... 'fit': Calculate shapelet coeff's by fitting ('fit') or integrating (None) shapelet_gresid ..... 'False': Use Gaussian residual image for shapelet decomposition?
- shapelet_basis
This parameter is a string (default is
'cartesian'
) that determines the type of shapelet basis used. Currently however, only cartesian is supported.- shapelet_fitmode
This parameter is a string (default is
'fit'
) that determines the method of calculating shapelet coefficients. IfNone
, then these are calculated by integrating (actually, by summing over pixels, which introduces errors due to discretisation). If ‘fit’, then the coefficients are found by least-squares fitting of the shapelet basis functions to the image.- shapelet_gresid
This parameter is a Boolean (default is
True
). IfTrue
, then the shapelet decomposition is done on the Gaussian residual image rather that the ch0 image.
Footnotes