calwf3

The WFC3 calibration pipeline used for processing data from the UVIS or IR detectors is called calwf3. While calwf3 is a single executable which can fully process WFC3 data, the pipeline has been designed such that a number of its components can also be invoked as standalone executables. Aside from the calwf3 executable itself, the standalone executable components are: wf3cte, wf3ccd, wf32d, wf3ir, wf3rej, and wf3sum. The first three components apply to UVIS data, wf3ir applies to IR data, and the wf3rej program is used for data from both detectors to combine multiple exposures contained in a CR-SPLIT or REPEAT-OBS set. The wf3sum program sums together the IMSET chips of REPEAT-OBS exposures, and there is no Python wrapper for the wf3sum executable.

The calwf3 processes exposures according to the setting (PERFORM, OMIT, COMPLETE, SKIPPED) of the calibration switch keywords (e.g., FLATCORR, PCTECORR) in the primary header of the input file. The calibration switch keywords directly correspond to calibration processing steps. A flow diagram representing the calibration steps is available in WFC3 Data Handbook.

The calibrated output products generated by calwf3 for UVIS are the FLT and CRJ (when applicable) files, as well as the Charge Transfer Efficiency corrected (CTE-corrected) versions of these files, FLC and CRC. Correspondingly, the output products for the IR detector are the FLT and CRJ (when applicable) files.

HST File Naming Convention available through the archive has a thorough description of how files are named and what those names mean. See also the Types of Output Files From calwf3 section in this document.

Note

For completeness of this discussion, AstroDrizzle functionality has been part of the automated calibration pipeline since 2012. AstroDrizzle removes geometric distortion, corrects for sky background variations, flags cosmic-rays, and combines images with optional subsampling. AstroDrizzle generates the calibrated drizzled data products DRZ and DRC, where the latter is for CTE-corrected images. See the WFC3 Data Handbook or DrizzlePac for more information.

As previously noted, the HSTCAL package is needed to support the calibration interface wrappers contained in the WFC3TOOLS package.

Discussion of the C Version of calwf3

Where to Find calwf3

The C code for calwf3 is part of HSTCAL package, and the source code can be downloaded from its Git repository Spacetelescope/hstcal. Downloading the source code requires compiling and linking the package with third-party software which can sometimes be tricky. Alternatively, the HSTCAL binaries can be downloaded from conda-forge. High-level release notes for all of the HSTCAL package updates can be found in its Git repository at Releases.

The current WFC3 Data Handbook can be found here. If you have questions not addressed in this documentation or need help with installing or using the software in a timely fashion, please contact the STScI Help Desk. You may also submit a GitHub issue for either the HSTCAL or WFC3TOOLS repositories.

Running calwf3

The calwf3 C executable can be run on a single input RAW file or an ASN table listing the members of an association. When processing an association, it retrieves calibration switch and reference file keyword settings from the first image listed in the ASN table. calwf3 does not accept a user-defined list of input images or wildcards on the command line (e.g. *_raw.fits cannot be used to process all raw files in the current directory). A more extensive discussion regarding required input and options for calwf3 follows in the next section.

The wf3ccd, wf32d, wf3cte and wf3ir tasks on the other hand, will accept user-defined input file lists, but they will not accept an association table (_asn.fits) as input. The standalone components wf3rej and wf3sum do not accept lists.

Command Line Options for the calwf3 C Executable

calwf3 can be called directly from the operating system command line by supplying the executable calwf3.e with an input file and a list of options. This is the same executable that the WFC3TOOLS package wraps with Python code.

   calwf3.e [options] input
   calwf3.e -vts iaa012wdq_raw.fits

   input : str
       Name of input file
       - single filename (_raw.fits or _crj.fits)
       - filename of an ASN table (_asn.fits)

   options
       -d : print optional debugging statements
       -q : print messages only to the trailer file
       -r : print version number and date of software (e.g., Current version: 3.6.2 (May-27-2021))
       -s : save temporary files
       -t : print a detailed time stamp
       -v : print verbose time stamps and information
       -1 : suppress the OpemMP parallel processing for the UVIS CTE correction
   --help : print the syntax for executing this command
--version : print version number of software (e.g., 3.6.2)
--gitinfo : print git information (if it can be obtained)

Note

calwf3 can be run on a filename which represents a single image which is not RAW (_raw.fits) file input. Ideally, you should use the appropriate standalone component (e.g., wf3rej) to process an intermediate product, but calwf3 can perform this processing. This capability of calwf3 should be used with caution.

Running Many Files at the Same Time

The C command line executable only accepts one file at a time, but you can use operating system tools like awk to process many _raw.fits files in a directory:

ls *raw.fits | awk '{print "calwf3.e",$1}' | csh

Discussion of the Python Wrapper calwf3

Where to Find calwf3

The Python wrapper for calwf3 is part of WFC3TOOLS package, and the source code can be downloaded from the Git repository in the Spacetelescope/wfc3tools area. Alternatively, the package can be downloaded from PyPi.

Running calwf3 from a Python Session Using WFC3TOOLS

The WFC3TOOLS Python wrappers act as a convenience front-end functions for the C code by allowing you to integrate the invocation of calwf3 with additional Python analysis utilities. In order to use the Python calwf3 wrapper from within the Python environment:

from wfc3tools import calwf3
filename = 'path/to/input/filename.fits'
calwf3(filename, save_tmp=True, verbose=True)

Parameter Options

  • input : str, default=None

    • Single filename (iaa012wdq_raw.fits)

    • Filename of an ASN table (ibfma4030_asn.fits)

  • printtimebool, default=False

    If True, print a detailed time stamp.

  • save_tmpbool, default=False

    If True, save temporary files.

  • verbosebool, optional, default=False

    If True, print verbose time stamps and information.

  • debugbool, default=False

    If True, print optional debugging statements.

  • parallelbool, default=True

    If True, run the code with OpemMP parallel processing turned on for the UVIS CTE correction.

  • log_funcfunc(), default=print()

    If not specified, the print function is used for logging to facilitate use in the Jupyter notebook.

Note

The Python calwf3 module does not support all of the command line options available to the C calwf3 executable.

Running Many Files at the Same Time

The recommended method for running calwf3 on many files is to use the calwf3 Python wrapper in the WFC3TOOLS package.

For example:

from wfc3tools import calwf3
from glob import glob

for filename in glob('i*_raw.fits'):
    calwf3(filename)

Displaying Output from calwf3 in a Jupyter Notebook

When calling calwf3 from a Jupyter notebook or from the Python wrappers, informational text output from the underlying calwf3.e C executable will be passed through print as the program runs and will show up in the user’s cell. This behavior can be customized by passing your own function as the log_func keyword argument to calwf3. As output is read from the underlying program, the calwf3 Python wrapper will call log_func with the contents of each line. The print is an obvious choice for a log function, but this also provides a way to connect calwf3 to the Python logging system by passing the logging.debug function or similar.

If log_func=None is passed, informational text output from the underlying program will be ignored, but the program’s exit code will still be checked for successful completion.

Note

When running in the notebook or from the Python wrappers, the calwf3 module may raise a RuntimeError if the underlying calwf3.e program fails with a non-zero exit code. Review the text output during the calibration call for hints as to what went wrong. Full runtime and error messages are printed to the terminal window and saved in the trailer file (.tra) for every run to help you diagnose the issue.

Types of Files Used as Input to calwf3

  • _asn file: name of an association table

  • _raw file: name of an individual, uncalibrated exposure

  • _crj file: name of any sub-product from an association table

  • _ima file: name of an intermediate step file (IR multiaccum), proceed with caution when using this option

While both CR-SPLIT and REPEAT-OBS exposures from an association get combined using calwf3, dithered observations from an association will be combined using AstroDrizzle. Images taken at a given dither position can be additionally CR-SPLIT (UVIS only) into multiple exposures.

When calwf3 is given an input file, it first discovers which of the above types of files it has been provided, and then ensures the specified input exists. calwf3 then checks to see which DETECTOR was in use for the data acqusition and calls the appropriate processing pipeline, either UVIS or IR.

Association Tables

An association file has a single extension that is a binary FITS table. The table has three columns where the member names (MEMNAME), member types (MEMTYPE), the role which that member plays in the association, and a boolean value for whether the member is present (MEMPRSNT) are displayed. The present value for the product shows “yes” because the data has already been processed and the table updated. calwf3 will check for the existence on disk of each member and then record the type and any products which will be produced from the association.

MEMTYPE

DESCRIPTION

EXP-CRJ

An input CR-SPLIT exposure

EXP-CRn

An input CR-SPLIT exposure for CR-combined image n (multiple sets)

PROD-CRJ

CR-combined output product from a single set

PROD-CRn

CR-combined output product n from multiple sets

EXP-RPT

An input REPEAT-OBS exposure for a single set

EXP-RPn

An input REPEAT-OBS exposure for repeated image n

PROD-RPT

An output product for a REPEAT-OBS combined single set

PROD-RPn

REPEAT-OBS combined output product n from multiple sets

EXP-DTH

An input dithered exposure

PROD-DTH

A dither-combined output product

In order to create a geometrically correct, drizzle-combined product, PROD-DTH exposures are combined only with AstroDrizzle, which executes after calwf3 has finished processing all members.

PROD-RPT and PROD-CRJ products are combined using wf3rej and all output files have the _cr.fits extension.

Here’s an example of what an association table might contain:

#  Table iacr51010_asn.fits[1]  Tue 15:23:02 25-Apr-2017

# row MEMNAME        MEMTYPE        MEMPRSNT
#

    1 IACR51OHQ      EXP-RP1        yes
    2 IACR51OJQ      EXP-RP1        yes
    3 IACR51OKQ      EXP-RP2        yes
    4 IACR51OMQ      EXP-RP2        yes
    5 IACR51010      PROD-DTH       yes
    6 IACR51011      PROD-RP1       yes
    7 IACR51012      PROD-RP2       yes

The association file has four REPEAT-OBS exposures and instructs calwf3 to make three products, one for RP1 members, one for RP2 members, and one dither combination for all of the members.

The IACR51010 will be produced by AstroDrizzle while the IACR51011 and IACR51012 products will be produced by calwf3 using wf3rej.

Intermediate Files

When calwf3 determines that an intermediate product has been given as input, the preferred method is for users to call the stand-alone tasks by hand. However, it will default to looking for the ASN_TAB keyword in the file header and will partially process the table that is specified.

Single Files

As previously noted, the calwf3 processes exposures according to the calibration switch settings in the primary header of the input file. For single exposure processing, the calibration switch keywords, CRCORR and RPTCORR, are set to OMIT by default, as these processes require multiple observations.

UVIS Data Single File FITS Format

The full-frame _raw.fits file for the UVIS detector data contains a primary header data unit (PHDU) with global header information and no data component, as well as multiple extensions in groups of three. Each exposure has a corresponding set of three extensions that are comprised of the science image itself, the error associated with each pixel, and data quality flags for the pixel.

UVIS data raw file format

Fig. 1 UVIS data raw file format

IR Data Single File FITS Format

The input _raw.fits file for the IR detector data also contains a primary header data unit (PHDU) with global header information and no data component, as well as multiple extensions in groups of five. In this case each exposure has a corresponding set of five extensions that are comprised of the science image itself, the error associated with each pixel, data quality flags for the pixel, the number of samples used to calculate the pixel signal, and the accumulated integration time for each pixel. The final output file contains only five extensions, each containing the final values for the entire set of exposures as related to the slope image in the science extension.

IR data raw file format

Fig. 2 IR data raw file format

Explanation of the FITS Extensions

  • The science image contains the data from the focal plane array detectors.

  • The error array contains an estimate of the statistical uncertainty associated with each corresponding science image pixel

  • The data quality array contains independent flags indicating various status and problem conditions associated with each corresponding pixel in the science image

  • The sample array (IR ONLY) contains the number of samples used to derive the corresponding pixel values in the science image.

  • The time array (IR ONLY) contains the effective integration time associated with each corresponding science image pixel value.

Types of Output Files from calwf3

The suffixes used for WFC3 raw and calibrated data products closely align to those used by ACS and NICMOS:

SUFFIX

DESCRIPTION

UNITS

_raw

raw data

DN

_rac

UVIS CTE corrected raw data, no other calibration

DN

_asn

association table for observation set

_spt

telescope and WFC3 telemetry and engineering data

_blv_tmp

overscan-trimmed UVIS exposure

DN

_blc_tmp

overscan-trimmed UVIS, CTE corrected exposure

DN

_crj_tmp

uncalibrated, cosmic-ray rejected combined

DN

_crc_tmp

uncalibrated, cosmic-rat rejected, CTE cleaned

DN

_ima

calibrated intermediate IR multiaccum image

\(e^{-}/s\)

_flt

UVIS calibrated exposure

\(e^{-}\)

_flc

UVIS calibrated exposure including CTE correction

\(e^{-}\)

_flt

IR calibrated exposure

\(e^{-}/s\)

_crj

UVIS calibrated, cosmic ray rejected image

\(e^{-}\)

_crj

IR calibrated, cosmic ray rejected image

\(e^{-}/s\)

_crc

UVIS calibrated, CR rejected, CTE cleaned image

\(e^{-}\)

.tra

trailer file, contains processing messages

The DRZ and DRC products are produced with AstroDrizzle which executes once calwf3 completes.

Keyword Usage

calwf3 processing is controlled by the values of keywords in the input image headers. Certain keywords, referred to as calibration switches, are used to control which calibration steps are performed. Reference file keywords indicate which reference files to use in the corresponding calibration steps. Users who wish to perform custom reprocessing of their data may change the values of these keywords in the _raw.fits file primary headers and then rerun the modified file through calwf3. See the WFC3 Data Handbook for a more complete description of these keywords and their values.

Using CRDS to Update Your Reference Files

CRDS is the reference file management software used by STScI for organizing and assigning reference files to datasets. Users can query CRDS to get the best reference files for their data available at the time of the request. The following link explains how you can use this facility via a web interface, Using CRDS to find the best reference files for your data, or from the command line.

UVIS Pipeline

See https://hst-docs.stsci.edu/wfc3dhb/chapter-3-wfc3-data-calibration/3-2-uvis-data-calibration-steps

IR Pipeline

See https://hst-docs.stsci.edu/wfc3dhb/chapter-3-wfc3-data-calibration/3-3-ir-data-calibration-steps