STScI Logo

Hubble Space Telescope
Software Tools

Removal of Bias Striping Noise from Post-SM4 ACS WFC Images


All images taken with the Advanced Camera for Surveys Wide Field Channel (ACS/WFC) after Servicing Mission 4 show a row-correlated noise due to the CCD Electronics Box Replacement (CEB-R). The CEB-R includes an Application-Specific Integrated Circuit (ASIC) that generates the bias and reference voltages for the Wide Field Channel CCDs. The ASIC voltages suffer from low-frequency noise, at 1mHz to 1Hz (Loose 2011).

This noise contribution, first seen in CEB-R thermal vac testing, does not matter for bias voltages going to the CCDs because the fluctuations are cancelled out by correlated double sampling (CDS) during the CCD readout. However, there is one reference voltage from the ASIC that is used to offset the signal, applied after the CDS stage. Here, the noise does not cancel out, and manifests as a slow moving variation of the baseline. A power spectrum analysis reveals this to be very nearly "1/f"-noise, also known as "pink noise."

In practice, we observe a horizontal "striping" in all post-SM4 WFC images, virtually uniform along rows for all four amplifiers reading out the two WFC CCDs. Because the amplifiers are in the corners of the WFC footprint, the row striping noise in WFC1 is mirror-reversed in the WFC2 rows. An example of this phenomenon is shown in Figure 1. The 1/f power spectrum of this striping noise means that the fluctations are increasingly stronger on increasingly larger scales.

Figure 1: The WFC1 readout from a post-SM4 bias frame, which has been subtracted by the calibration superbias (nearly stripe-free) to remove fixed bias structure and thereby highlight the striping noise.

During a year of monitoring after SM4, the striping noise amplitude has remained highly stable. The amplitude distribution of the stripes is shown in Figure 2. This distribution is well fit across most of its range by a Gaussian profile with sigma = 0.75 electrons (Fig. 2, red). There is a modest negative skewness that brings the overall standard deviation to 0.9 electrons. This is less than 25% of the WFC read noise, and for most WFC science will present negligible effect (e.g., for small aperture photometry with local background estimation). However, the highly correlated nature of the striping noise can strongly impact certain science cases such as faint isophotal analyses or weak lensing studies relying upon precise ellipticity measurements for faint galaxies. For this reason, the ACS Team has tested several algorithms for post-SM4 striping removal, and we are making available the preferred algorithm.

Figure 2: Histogram of WFC stripe-noise intensity as measured from a year of post-SM4 BIAS images.

Striping Mitigation Software

CALACS performs stripe removal, only on full frame WFC images, using the overscans; however, it is limited in precision to ~0.4 electrons. Any remaining low level striping noise below ~0.4 electrons requires fitting the stripes across the science area. In essence, this represents a row-by-row determination of the background, with the advantage that the mirror-imaging of the stripe noise between CCDs allows us to fit two spatially separated rows (8192 total columns) simultaneously.

For images where the sky background is low to moderate (<35 electrons), and where the astronomical scene is relatively "uncomplicated," the algorithm does an excellent job of suppressing the striping noise. However for bright backgrounds and/or complicated scenes where a uniform sky is nonexistent (e.g., WFC-spanning nebulosity or background gradient) or difficult to isolate (e.g., WFC-spanning globular cluster), this algorithm will do more harm than good. As an a posteriori check, we suggest that you compare the difference between corrected and uncorrected WFC images with the histogram shown in Figure 2. If the code is correcting the image with a much broader striping distribution than 0.9 electrons, we recommend that you do not use the striping correction code. In such cases, it is likely that the low level striping will not significantly impact your science.

For a more comprehensive treatment of the bias striping and its mitigation, we refer the reader to Grogin et al. (2011).

Installation and Caveats

The task, acs_destripe, written in Python, is part of the acstools package in PyRAF. For full frame images, it can be used to remove low level bias stripes that were not removed by CALACS. acs_destripe is the only way to remove bias stripes for sub-array images.

Please bear in mind the following caveats if you are planning to use this code:

Usage Tutorial

The following tutorial will guide you in correcting your post-SM4 ACS/WFC images for bias striping, using the publicly available algorithm described in Grogin et al. (2011).

Step 1: Preparing the inputs

The target for the de-striping code must be a FLT format image (not yet drizzled) whose filename ends in "_flt.fits". This image must have been processed by CALACS at least through the DARKCORR stage, and have units of counts or electrons. The code also needs access to the flat field for the image, as specified in the FITS extension-0 header keyword PFLTFILE. When retrieving your image(s) from the HST Archive, specifying the FLT file extension and the "Used Reference Files" should be sufficient.

Let us assume that we are in a directory containing a post-SM4 WFC FLT file to be de-striped (j12345678_flt.fits), and also containing its associated flat field (q12345678_pfl.fits) retrieved from the HST Archive.

The procedure for stripe removal begins as follows:

Start the PyRAF program:

> iraf
> pyraf
PyRAF (r1290) Copyright (c) 2002 AURA
Python 2.5.4 Copyright (c) 2001-2008 Python Software Foundation.
Python/CL command line wrapper
  .help describes executive commands
Edit the keyword PFLTFILE to your FLT image header using task hedit.
--> hedit j12345678_flt.fits[0] PFLTFILE q12345678_pfl.fits

The above step may be skipped if you maintain a jref/ directory of reference files where you have placed this flat field reference file, and your $jref environment variable is set to this directory. Alternately you may specify any valid path name for the PFLTFILE keyword if you keep the flat field elsewhere on the filesystem. Beware exceeding the FITS header character-length limit if specifying an absolute pathname for PFLTFILE. Now your FLT file is ready to be used as input for the stripe removal code.

Step 2: Running the task acs_destripe

Within PyRAF, the task acs_destripe is located in the acstools package, so we first need to import it:

--> import acstools
The following tasks in the acstools package can be run with TEAL:
   PixCteCorr     acs_destripe     updatenpol   

The code is run from the TEAL (Task Editor And Launcher) GUI, by typing

--> epar acs_destripe

This will open a window that allows the user to modify parameters and run the code. In our example, we will specify the name of the file to correct, and also an arbitrary suffix for the de-striped output:

 input = j12345678_flt.fits 
 output = dstrp 

You may right-click on the input text box to browse for the input file. If you have several files, the usual wildcards (e.g., @list, j*_flt.fits, etc.) are available in the input specification.

To run the code, click on the Execute button. Brief status messages are written to the screen as the code progresses through the images:

Task acs_destripe is running...

Processing j12345678_flt.fits ...Created corrected image: j12345678_flt_dstrp.fits

If the output file already exists, the task will abort unless the clobber parameter is set to "Yes".

Step 3: After running the task acs_destripe

The stripe-corrected image is suitable for further processing as customary for FLT files (e.g., with AstroDrizzle).

Because the stripe removal algorithm is known to perform poorly under certain conditions, we strongly urge you to visually inspect the output file before proceeding further.

For a quantitative assessment of the stripe removal fidelity, we suggest differencing the input and output SCI extensions and comparing the difference image histogram (the removed stripes) with the distribution plotted in Figure 2. If your distribution of stripe values is significantly broader, we recommend that you work with the original rather than the de-striped FLT.

Additional help

Within PyRAF, additional help is available via the TEAL interface: simply click Help on the upper right corner of the TEAL window and select acs_destripe Help.

The STSDAS Documentation page also contains information about acs_destripe

Feedback and suggestions

We explicitly request that the community provide us with feedback and input on the performance of the algorithm, its applicability, and any suggestions that might be beneficial. To do this, please send a message to the STScI Help Desk and it will be forwarded to the ACS Team.