Removal of Bias Striping Noise from Post-SM4 ACS WFC Images
Introduction
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 here.

Figure 2: Histogram of WFC stripe-noise intensity as measured from a year of post-SM4 BIAS images.
Striping Mitigation Software
Because of the low level of the striping noise relative to the WFC read noise, and because of the relatively few pixels available in the WFC overscans, we must fit 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, has been written in Python as part of the acstools package within PyRaf. The latest available version of this code can be found here.
Please bear in mind the following caveats if you are planning to use this code:
- This code is intended for use only upon post-SM4 full-frame ACS/WFC images in FLT format.
- It should only be used upon images already dark-subtracted (header keyword DARKCORR="COMPLETED")
- It is known to perform poorly in the presence of high backgrounds and/or complicated scenes.
- In addition to de-striping, this code also performs an approximate correction for WFC intra-CCD amplifier crosstalk (A<-->B and C<-->D crosstalk) assuming GAIN=2 crosstalk properties.
- If you also plan to use the pixel-based CTE correction , remove the striping before correcting the CTE.
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 flatfield 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 flatfield (q12345678_pfl.fits) retrieved from the HST Archive.
The procedure for stripe removal begins as follows:
Start the PyRAF program:
> iraf > pyraf PyRAF 1.9.1.dev (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.fitsThe above step may be skipped if you maintain a jref/ directory of reference files where you have placed this flatfield, and your $jref environment variable is set to this directory. Alternately you may specify any valid pathname for the PFLTFILE keyword if you keep the flatfield 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 updatenpolThe code is run from the TEAL (Task Editor And Launcher) GUI, by typing
--> epar acs_destripeThis 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 = dstrpYou 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 Drizzle/Multidrizzle).
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.
An available STSDAS Documentation page for acs_destripe can be reached here
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.