CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-drizzlepac

HST image combination using the drizzle algorithm to combine astronomical images, to model image distortion, to remove cosmic rays, and generally to improve the fidelity of data in the final image.

Overview
Eval results
Files

data-quality-calibration.mddocs/

Data Quality and Calibration

Tools for managing data quality flags, photometric equalization, and applying calibration corrections to HST observations. These utilities ensure data integrity and enable accurate photometric and astrometric analysis.

Capabilities

Data Quality Bit Management

Reset specified data quality (DQ) bits in HST FLT files to enable proper processing of flagged pixels.

def reset_dq_bits(input, bits, extver=None, extname='dq'):
    """
    Reset specified DQ values to 0 in FLT files.

    Parameters:
    - input: str or list, input FLT files to modify
    - bits: int or str, DQ bit values to reset (comma-separated string or integer)
    - extver: int, extension version to modify (default: all)
    - extname: str, extension name containing DQ array

    Returns:
    None (modifies input files in place)
    """

def run(configobj=None):
    """
    Processing function for resetbits task.

    Parameters:
    - configobj: ConfigObj, configuration with DQ bit parameters

    Returns:
    None (modifies input files)
    """

def main():
    """
    Command-line entry point for resetbits script.

    Returns:
    None
    """

Photometric Equalization

Equalize sensitivities of images across different chips and observation epochs to ensure consistent photometry.

def photeq(files='*_flt.fits', sciext='SCI', errext='ERR',
          readnoise=0.0, gain=1.0, platescale=1.0, exptime=1.0,
          expstart=0.0, **kwargs):
    """
    Equalize sensitivities across chips and epochs.

    Parameters:
    - files: str or list, input files for photometric equalization
    - sciext: str, science extension name
    - errext: str, error extension name
    - readnoise: float, detector read noise value
    - gain: float, detector gain value
    - platescale: float, pixel scale in arcsec/pixel
    - exptime: float, exposure time for normalization
    - expstart: float, exposure start time
    - **kwargs: dict, additional calibration parameters

    Returns:
    None (modifies input files with equalized values)
    """

def run(configObj):
    """
    Processing function for photeq task.

    Parameters:
    - configObj: ConfigObj, configuration with photometric parameters

    Returns:
    None (applies photometric equalization)
    """

Distortion Reference File Updates

Update ACS headers with new distortion reference file information and residual distortion corrections.

def update(input, refdir="jref$", local=None, interactive=False,
          wcsupdate=True):
    """
    Update headers with ACS distortion reference files.

    Parameters:
    - input: str or list, input ACS files to update
    - refdir: str, directory containing reference files
    - local: str, local directory for reference files
    - interactive: bool, interactive mode for user prompts
    - wcsupdate: bool, update WCS after reference file update

    Returns:
    None (updates file headers)
    """

def run(configobj=None, editpars=False):
    """
    Processing function for updatenpol task.

    Parameters:
    - configobj: ConfigObj, configuration with update parameters
    - editpars: bool, allow parameter editing

    Returns:
    None (applies reference file updates)
    """

def main():
    """
    Command-line entry point for updatenpol script.

    Returns:
    None
    """

Pixel Value Replacement

Replace problematic pixel values such as NaNs in images with user-specified replacement values.

def replace(input, **pars):
    """
    Replace pixel values like NaNs with other values.

    Parameters:
    - input: str or list, input images to modify
    - **pars: dict, replacement parameters including:
        - mask_value: value to search for replacement
        - fill_value: replacement value
        - extensions: list of extensions to process

    Returns:
    None (modifies input images)
    """

def run(configobj):
    """
    Processing function for pixreplace task.

    Parameters:
    - configobj: ConfigObj, configuration with replacement parameters

    Returns:
    None (applies pixel value replacements)
    """

Usage Examples

Resetting Data Quality Bits

from drizzlepac import resetbits

# Reset cosmic ray and hot pixel flags
resetbits.reset_dq_bits('j8bt06nyq_flt.fits', bits='4096,8192')

# Reset specific bits for multiple files
input_files = ['file1_flt.fits', 'file2_flt.fits', 'file3_flt.fits']
resetbits.reset_dq_bits(input_files, bits='4096')  # Reset CR flag

# Command-line usage equivalent
# resetbits j8bt06nyq_flt.fits 4096,8192

Photometric Equalization

from drizzlepac import photeq

# Basic photometric equalization
photeq.photeq(files='*_flt.fits',
             readnoise=3.1,
             gain=2.0,
             platescale=0.05)  # ACS/WFC pixel scale

# Multi-chip equalization with specific parameters
acs_files = ['j8bt06nyq_flt.fits', 'j8bt06nzq_flt.fits']
photeq.photeq(files=acs_files,
             sciext='SCI',
             errext='ERR',
             readnoise=3.1,
             gain=2.0)

Updating ACS Distortion References

from drizzlepac import updatenpol

# Update ACS files with latest distortion references
updatenpol.update('j8bt*_flt.fits',
                 refdir='jref$',
                 interactive=False,
                 wcsupdate=True)

# Update with local reference files
updatenpol.update('observation_flt.fits',
                 local='/path/to/local/refs/',
                 wcsupdate=True)

Replacing NaN Values

from drizzlepac import pixreplace

# Replace NaN values with zero
pixreplace.replace('image_with_nans.fits',
                  mask_value=float('nan'),
                  fill_value=0.0)

# Replace specific problematic values
pixreplace.replace('problematic_image.fits',
                  mask_value=-999.0,
                  fill_value=0.0,
                  extensions=['SCI', 'ERR'])

Data Quality Bit Definitions

Standard HST DQ Bit Values

BitValueDescription
01Reed-Solomon decoding error
12Data lost in transmission
24Bad detector pixel or beyond aperture
38Masked by aperture feature
416Hot pixel
532CTE tail
664Warm pixel
7128Bad pixel in bias
8256Bad pixel in dark
9512Bad pixel in flat field
101024Impacted by cosmic ray
112048Impacted by detector artifact
124096Pixel saturated
138192Bad pixel flagged by user

Common DQ Bit Operations

# Reset cosmic ray flags (bit 10, value 1024)
resetbits.reset_dq_bits(files, bits='1024')

# Reset multiple flags
resetbits.reset_dq_bits(files, bits='1024,4096')  # CR + saturation

# Reset all user-flagged bad pixels
resetbits.reset_dq_bits(files, bits='8192')

Calibration Parameters

Photometric Parameters

Key parameters for photometric equalization:

  • Read Noise: Detector-specific noise characteristics
  • Gain: Conversion factor from electrons to DN
  • Plate Scale: Angular pixel size for flux normalization
  • Exposure Time: Temporal normalization factor
  • Filter Corrections: Wavelength-dependent adjustments

Instrument-Specific Values

ACS/WFC

photeq_pars = {
    'readnoise': 3.1,    # e-/pixel
    'gain': 2.0,         # e-/DN
    'platescale': 0.05   # arcsec/pixel
}

WFC3/UVIS

photeq_pars = {
    'readnoise': 3.1,    # e-/pixel
    'gain': 1.5,         # e-/DN
    'platescale': 0.04   # arcsec/pixel
}

WFC3/IR

photeq_pars = {
    'readnoise': 2.5,    # e-/pixel
    'gain': 2.5,         # e-/DN
    'platescale': 0.13   # arcsec/pixel
}

Reference File Management

ACS NPOL File Updates

The updatenpol task manages:

  • NPOLFILE: Non-polynomial distortion corrections
  • D2IMFILE: Detector-to-image coordinate transformations
  • Residual corrections: Additional distortion terms

Reference File Locations

  • CRDS Cache: Calibration Reference Data System
  • JREF: HST reference file directory
  • Local Files: User-provided reference files

Error Handling

Common Calibration Errors

  • IOError: Missing input files or reference files
  • ValueError: Invalid DQ bit values or calibration parameters
  • KeyError: Missing required FITS header keywords
  • PermissionError: Write access issues for file modifications

Quality Checks

# Verify successful DQ bit reset
from astropy.io import fits

with fits.open('processed_flt.fits') as hdul:
    dq_data = hdul['DQ', 1].data
    cr_pixels = (dq_data & 1024) > 0  # Check for remaining CR flags
    print(f"Remaining CR pixels: {cr_pixels.sum()}")

Best Practices

DQ Bit Management

  1. Backup original files before resetting DQ bits
  2. Document bit modifications for reproducibility
  3. Validate results after DQ modifications
  4. Use conservative approach - reset only necessary bits

Photometric Equalization

  1. Apply before image combination for consistent photometry
  2. Use instrument-specific parameters for accuracy
  3. Validate equalization results across multiple exposures
  4. Consider temporal variations for long-term observations

Distortion Updates

  1. Use latest reference files for best accuracy
  2. Update WCS after reference changes
  3. Validate astrometric precision after updates
  4. Document reference file versions used

Install with Tessl CLI

npx tessl i tessl/pypi-drizzlepac

docs

coordinate-transformations.md

data-quality-calibration.md

hap-processing.md

image-processing.md

index.md

registration-alignment.md

wcs-region-management.md

tile.json