Configuration File#

Many options and behavior of Forcepho are controlled by a configuration file, which is in yaml format. Here we give an example configuration file with descriptions of each parameter.

Note that any parameter can generally be overridden at run time with a command line argument. Also, forcepho will try to automatially expand shell variables. See forcepho.config.read_config() for details.

Switches are generally represented with 0 (False, off) and 1 (True, on)

Filters#

This is a list of the bands for which fluxes will be measured. Pixel data will be grouped by bands. Only images with a header keyword "FILTER with value equal to one of these bands will be used in the fitting. PSFs must be available for each of these bands.

bandlist:
 - F090W
 - F115W
 - F200W
 - F277W
 - F335M
 - F444W

Input data locations#

First we have the locations of the initialization peak catalog (raw_catalog) as well as the Gaussian mixture files.

raw_catalog:
    $PROJECT_DIR/data/catalogs/initial_peak_catalog.fits
big_catalog:

splinedatafile:
    $PROJECT_DIR/data/stores/sersic_mog_model.smooth=0.0150.h5
psfstorefile:
    $PROJECT_DIR/data/psfs/psf_jwst_ng4.h5

For the simpler direct FITS file interface, use the following for the list of files to include:

fitsfiles:
 - band0_exp0.fits
 - band0_exp1.fits
 - band1_exp0.fits
 - band2_exp0.fits

They must be in order by band, but otherwise the filenames are arbitrary.

For the efficient StorePatch data interface, use something like the following

pixelstorefile:
  $PROJECT_DIR/data/stores/pixels_deepfield.h5
metastorefile:
  $PROJECT_DIR/data/stores/meta_deepfield.json

Replace these filenames with the result of your image pre-processing, and make sure those files are present (or soft-linked) at the stated locations.

Output locations#

outbase:
  ./output/test
scene_catalog:
  outscene.fits
write_residuals:  # whether to output residual images, or just samples.
  1

All the output files will be placed within a directory specified by outbase. See output.md for the structure of this directory. The output catalog of parameter values after optimization or at the end of sampling will be placed in this directory with the name given by scene_catalog. It is usually good practice to give this directory a distinct name for each run. The value of write_residuals controls whether residual images (from the last parameter state) are output for each patch.

Bounds & Priors#

# Add priors that are steep near the edges of the prior to aid optimization
add_barriers:
  0

bounds_kwargs:
n_sig_flux: 5.0  # Nsigma/snr at flux = 1/nJy
sqrtq_range: # range of sqrt(b/a)
    - 0.4
    - 1.0
pa_range:  # range of pa, radians
    - -2.0
    - 2.0
n_pix: # number of pixels for dRA, dDec
    2
pixscale: # pixelscale for dRA, dDdec
    0.03

These parameters are used to specify limits on the parameter values.

The add_barriers switch can be used to add very steep prior penalty near the edges, which is useful for the optimization methods that can otherwise get stuck at the edges of the allowed parameter values

The entries under bounds_kwargs indicate allowed ranges for the parameters sqrt(b/a) and pa. The position ranges are allowed to move by n_pix * pixscale arcseconds in both RA and Dec.

Patch Generation#

maxactive_per_patch:  # max number of active sources per patch
    15
strict:  # whether to be strict about including all 'linked' sources
    1
patch_maxradius:  # in arcsec
    15
max_active_fraction:  # maximum fraction of all sources that can be checked out at once
    0.1
ntry_checkout:
    1000
buffer_size:
    5e7

These parameters control the checking out of regions and scenes that define patches. The most important one is maxactive_per_patch, the maximum number of sources to fit simultaneously in a patch. It is generally limited by GPU memory size.

Sampling parameters#

target_niter:  # require this many samples for each source
    256
sampling_draws: # generate this many samples for each patch
    256
warmup:  # spend this many iterations tuning the proposal covariance matrix
    - 256
full_cov:  # Whether to estimate the dense proposal covariance matrix, or just the diagonal.
    True
max_treedepth: # do not take more than 2^max_treedepth steps in each trajectory
    9

These parameters control the HMC sampling.

Optimization parameters#

use_gradients:
    1
linear_optimize:
    0
gtol:
    0.00001

These parameters control the optimization. The most important one is linear_optimize, which determines whether a final round of linear least squares is used to optimize the fluxes, conditional on the best fit shapes and positions. This can be useful to overcome the effect of the ‘barriers’ mentioned in the Bounds section, and also yields estimates of the flux uncertainties and their covariance.

Pre-processing#

original_images:  # search path
    $PROJECT_DIR/data/images/original/*fits
cutID:
    deepfield
frames_directory:  # full path (optional, for preprocessing)
    $PROJECT_DIR/data/images/cutouts
max_snr:
    0
do_fluxcal:  # whether to flux calibrate the images using ABMAG keyword
    1
bitmask: # integer corresponding to the bits of the mask image that constitue "bad" pixels.
    1
frame_search_pattern:
    deepfield-??-??_*sci.fits
detection_catalog: # full path to input catalog
    $PROJECT_DIR/data/catalogs/detection_table_v0.5.fits

Pre-processing scripts can take many different forms, and are not strictly part of a given inference run, but it can be useful to have the preprocessing configuration stored with the other parameters.

Data Types & Sizes#

pix_dtype:
    float32
meta_dtype:
    float32
super_pixel_size:  # number of pixels along one side of a superpixel
    8
nside_full:  # number of pixels along one side of a square input frame
    - 2048
    - 2048

These will generally not need to be changed.

Background tweaks#

tweak_background:
    tweakbg

# in nJy/pix, to be subtracted from individual exposures
tweakbg:
    F105W: -0.0511
    F125W: -0.0429
    F140W: -0.0566
    F160W: -0.0463

The value of tweak_background specifies the name of the dictionary in the configuration file to use for background level tweaks. Leave it empty if you don’t want to do any background tweaks.