aimfast modules#

amifast.aimfast module#

aimfast.aimfast.compare_models(models, tolerance=0.2, plot=True, all_sources=False, shape_limit=6.0, off_axis=None, closest_only=False, prefix=None, flux_plot='log', fxlabels=None, fylabels=None, ftitles=None, svg=False, title_size='16pt', x_label_size='12pt', y_label_size='12pt', legend_size='10pt', xmajor_size='8pt', ymajor_size='8pt', bar_size='12pt', bar_major_size='8pt')[source]#

Plot model1 source properties against that of model2

Parameters#

modelsdict

Tigger formatted model files e.g {model1: model2}.

tolerancefloat

Tolerace in detecting source from model 2 (in arcsec).

plotbool

Output html plot from which a png can be obtained.

all_source: bool

Compare all sources in the catalog (else only point-like source)

shape_limit: float

Cross match only sources with maj-axis less than this value

closest_only: bool

Returns the closest source only as the matching source

flux_plot: str

The type of output flux comparison plot (options:log,snr,inout)

prefixstr

Prefix for output htmls

fxlabelsstr[]

X-axis labels for the flux comparison plots

fylabelsstr[]

Y-axis labels for the flux comparison plots

fylabelsstr[]

Title labels for the flux comparison plots

Returns#

resultsdict

Dictionary of source properties from each model.

aimfast.aimfast.compare_residuals(residuals, skymodel=None, points=None, inline=False, area_factor=None, prefix=None, fov_factor=None, units='micro', title_size='14pt', xmajor_size='6pt', ymajor_size='6pt', legend_size='10pt', x_label_size='12pt', y_label_size='12pt')[source]#
aimfast.aimfast.create_logger()[source]#

Create a console logger

aimfast.aimfast.fitsInfo(fitsname=None)[source]#

Get fits header info.

Parameters#

fitsnamefits file

Restored image (cube)

Returns#

fitsinfodict

Dictionary of fits information e.g. {‘wcs’: wcs, ‘ra’: ra, ‘dec’: dec, ‘dra’: dra, ‘ddec’: ddec, ‘raPix’: raPix, ‘decPix’: decPix, ‘b_size’: beam_size, ‘numPix’: numPix, ‘centre’: centre, ‘skyArea’: skyArea}

aimfast.aimfast.fix_wcs_fits(wcs, dropaxis=2)[source]#

This removes the degenerated dimensions in APLpy 2.X… The input must be the object returned by aplpy.FITSFigure(). dropaxis is the index where to start dropping the axis (by default it assumes the 3rd,4th place).

aimfast.aimfast.generate_default_config(configfile)[source]#

Generate default config file for running source finders

aimfast.aimfast.get_aimfast_data(filename='fidelity_results.json', dir='.')[source]#

Extracts data from the json data file

aimfast.aimfast.get_argparser()[source]#

Get argument parser.

aimfast.aimfast.get_box(wcs, radec, w)[source]#

Get box of width w around source coordinates radec.

Parameters#

radectuple

RA and DEC in degrees.

wint

Width of box.

wcsatropy.wcs instance

World Coordinate System.

Returns#

boxtuple

A box centred at radec.

aimfast.aimfast.get_detected_sources_properties(model_1, model_2, tolerance, shape_limit=6.0, all_sources=False, closest_only=False, off_axis=None)[source]#

Extracts the output simulation sources properties.

Parameters#

models_1file

Tigger formatted or txt model 1 file

models_2file

Compare all sources in the catalog (else only sources with maj<shape_limit)

tolerancefloat

Tolerace to cross-match sources

shape_limit: float

Cross match only sources with maj-axis less than this value

closest_only: bool

Returns the closest source only as the matching source

off_axis: float

Cross-match only sources within this distance from the centre

Returns#

(targets_flux, targets_scale, targets_position)tuple

Tuple of target flux, morphology and astrometry information

aimfast.aimfast.get_image_products(images, mask)[source]#

Get a product of images with a mask

Parameters#

images: list

List of fits images to get product

mask: str

Mask to multiply the images

Returns#

prod_images: list

List of resulting fits images

aimfast.aimfast.get_model(catalog)[source]#

Get model model object from file catalog

aimfast.aimfast.get_region_stats(fitsname, regions_file)[source]#

Extract flux densities measurements within the provided region

aimfast.aimfast.get_sf_params(configfile)[source]#
aimfast.aimfast.get_source_overlay(sources1, sources2)[source]#

Get source from models compare for overlay

aimfast.aimfast.get_source_properties_from_catalog(catalog_file)[source]#
aimfast.aimfast.get_src_scale(source_shape)[source]#

Get scale measure of the source in arcsec.

Parameters#

source_shapelsm object

Source shape object from model

Returns#

(scale_out_arc_sec, scale_out_err_arc_sec)tuple

Output source scale with error value

aimfast.aimfast.image_dynamic_range(fitsname, residual, area_factor=6)[source]#

Gets the dynamic range in a restored image.

Parameters#

fitsnamefits file

Restored image (cube).

residualfits file

Residual image (cube).

area_factor: int

Factor to multiply the beam area.

Returns#

DRdict

DRs - dynamic range values.

aimfast.aimfast.image_stats(image_data, test_normality=None, data_range=None)[source]#
aimfast.aimfast.json_dump(data_dict, filename='fidelity_results.json')[source]#

Dumps the computed dictionary results into a json file.

Parameters#

data_dictdict

Dictionary with output results to save.

filenamestr

Name of file json file where fidelity results will be dumped. Default is ‘fidelity_results.json’ in the current directory.

Note1#

If the fidelity_results.json file exists, it will be append, and only repeated image assessments will be replaced.

aimfast.aimfast.main()[source]#

Main function.

aimfast.aimfast.measure_psf(psffile, arcsec_size=20)[source]#

Measure point spread function after deconvolution.

Parameters#

psfilefits file

Point spread function file.

arcsec_sizefloat

Cross section size

Returns#

r0float

Average psf size.

aimfast.aimfast.model_dynamic_range(lsmname, fitsname, beam_size=5, area_factor=2)[source]#

Gets the dynamic range using model lsm and residual fits.

Parameters#

fitsnamefits file

Residual image (cube).

lsmnamelsm.html or .txt file

Model .lsm.html from pybdsm (or .txt converted tigger file).

beam_sizefloat

Average beam size in arcsec.

area_factorfloat

Factor to multiply the beam area.

Returns#

DRdict

DRs - dynamic range values.

aimfast.aimfast.noise_sigma(noise_image)[source]#

Determines the noise sigma level in a dirty image with no source

Parameters#

noise_imagefile

Noise image (cube).

Returns#

noise_stdfloat

Noise image standard deviation

aimfast.aimfast.normality_testing(data, test_normality='normaltest', data_range=None)[source]#

Performs a normality test on the image data.

Parameters#

datanumpy.array

Residual residual array. i.e. fitsio.open(fitsname)[0].data

test_normalitystr

Perform normality testing using either shapiro or normaltest.

data_rangeint

Range of data to perform normality testing.

Returns#

normalitydict

dictionary of stats props. e.g. {‘NORM’: (123.3, 0.012)} whereby the first element is the statistics (or average if data_range specified) of the datasets and second element is the p-value.

aimfast.aimfast.plot_aimfast_stats(fidelity_results_file, units='micro', prefix='')[source]#

Plot stats results if more that one residual images where assessed

aimfast.aimfast.plot_astrometry(models, label=None, tolerance=0.2, phase_centre=None, all_sources=False, off_axis=None)[source]#

Plot model-model positions from lsm.html/txt models

Parameters#

modelsdict

Tigger/text formatted model files e.g {model1: model2}.

labelstr

Use this label instead of the FITS image path when saving data.

tolerance: float

Radius around the source to be cross matched.

phase_centrestr

Phase centre of catalog (if not already embeded)

all_source: bool

Compare all sources in the catalog (else only point-like source)

aimfast.aimfast.plot_model_columns(catalog_file, x, y, x_err=None, y_err=None, svg=False, x_label=None, y_label=None, title=None, html_prefix=None, title_size='16pt', x_label_size='12pt', y_label_size='12pt', legend_size='10pt', xmajor_size='6pt', ymajor_size='6pt', units='micro')[source]#

Plot catalog columns including their uncertainties

aimfast.aimfast.plot_model_data(catalog_file, html_prefix='')[source]#

Plotting catalog table

aimfast.aimfast.plot_photometry(models, label=None, tolerance=0.2, phase_centre=None, all_sources=False, flux_plot='log', off_axis=None, shape_limit=6.0)[source]#

Plot model-model fluxes from lsm.html/txt models

Parameters#

modelsdict

Tigger/text formatted model files e.g {model1: model2}.

labelstr

Use this label instead of the FITS image path when saving data.

tolerance: float

Radius around the source to be cross matched (in arcsec).

phase_centrestr

Phase centre of catalog (if not already embeded)

all_source: bool

Compare all sources in the catalog (else only point-like source)

aimfast.aimfast.plot_residuals_noise(res_noise_images, skymodel=None, label=None, area_factor=2.0, points=100)[source]#

Plot residual-residual or noise data

Parameters#

res_noise_images: dict

Dictionary of residual images to plot {res1.fits: res2.fits}.

skymodel: file

Skymodel file to locate on source residuals (lsm.html/txt)

labelstr

Use this label instead of the FITS image path when saving data.

area_factorfloat

Factor to multiply the beam area.

points: int

Number of data point to generate in case of random residuals.

aimfast.aimfast.plot_subimage_stats(fitsnames, centre_coords, sizes, htmlprefix='default', title_size='12pt', x_label_size='10pt', y_label_size='10pt', bar_label_size='15pt', units='micro', svg=False)[source]#

Plot subimages and stats

aimfast.aimfast.residual_image_stats(fitsname, test_normality=None, data_range=None, threshold=None, chans=None, mask=None)[source]#

Gets statistcal properties of a residual image.

Parameters#

fitsnamefile

Residual image (cube).

test_normalitystr

Perform normality testing using either shapiro or normaltest.

data_rangeint, optional

Range of data to perform normality testing.

thresholdfloat, optional

Cut-off threshold to select channels in a cube

chansstr, optional

Channels to compute stats (e.g. 1;0~50;100~200)

maskfile

Fits mask to get stats in image

Returns#

propsdict

Dictionary of stats properties. e.g. {‘MEAN’: 0.0, ‘STDDev’: 0.1, ‘RMS’: 0.1,

‘SKEW’: 0.2, ‘KURT’: 0.3, ‘MAD’: 0.4, ‘MAX’: 0.7, ‘SUM_NEG’: -0.1}

Notes#

If normality_test=True, dictionary of stats props becomes e.g. {‘MEAN’: 0.0, ‘STDDev’: 0.1, ‘SKEW’: 0.2, ‘KURT’: 0.3, ‘MAD’: 0.4, ‘RMS’: 0.5, ‘SUM_NEG’: -0.1, ‘MAX’: 0.7, ‘NORM’: (123.3,0.012)} whereby the first element is the statistics (or average if data_range specified) of the datasets and second element is the p-value.

aimfast.aimfast.source_finding(sf_params, sf=None)[source]#
aimfast.aimfast.targets_not_matching(sources1, sources2, matched_names, flux_units='milli')[source]#

Plot model-model fluxes from lsm.html/txt models

Parameters#

sources1: list

List of sources from model 1

sources2: list

List of sources Sources from model 2

matched_names: dict

Dict of names from model 2 that matched that of model 1

flux_units: str

Units of flux density for tabulated values

Returns#

target_no_match1: dict

Sources from model 1 that have no match in model 2

target_no_match2: dict

Sources from model 2 that have no match in model 1

amifast.tests.test_aimfast module#