Subject: DIS Blue Chip Bias Ripples

From: Alan Watson

Submitted: Tue, 26 Mar 1996 13:11:23 -0700

Message number: 14 (previous: 13, next: 15 up: Index)

As is well known, the blue chip on DIS suffers from bias `ripples'
which have a peak-to-peak amplitude of 15-20 DN and a somewhat variable
period equivalent to 35-50 rows.  From conversations with Tomislav
Kundic, I gather that the bias ripples can also exhibit more complex
behaviour, in particular jumps.

Pending elimination of the ripples, I've constructed an algorithm to
reduce them.  The algorithm extracts the vertical ripple profile from
the underscan and overscan regions, determines the shift between them,
and then subtracts an appropriately shifted average ripple pattern from
each column.

In bias frames, the algorithm reduces power at the spatial frequencies
corresponding to the ripples by a couple of orders of magnitude.  The
algorithm does, however, introduce other spatial correlations, but
these have very much less power than the original ripples.  Some
results are in  The files are a
bias frame processed in different ways.

    p.fits      pedestal subtracted
    ps.fits     pedestal and super bias subtracted
    pr.fits     pedestal and ripples subtracted
    prs.fits    pedestal, ripples, and super bias subtracted

The super bias was constructed from 30 distinct bias frames after each
had a pedestal and ripples subtracted.

I'm appending an implementation of the algorithm in VISTA.  If someone
wants to implement this in IRAF I'd be happy to cheer from the side

Alan Watson

! -- reduce bias ripples in DIS blue chip images

! uses buffers 94 to 98 and box 20

parameter dst src

copy $dst $src

! extract overscan
copy 98 $src
box 20 sc=566 nc=21 sr=1 nr=522
window 98 box=20
box 20 sc=566 nc=21 sr=51 nr=522-100
abx 98 box=20 mean=mean silent
sub 98 c=mean
fixhead 98 origin
bin 98 binr=20 binc=1
fixhead 98 origin
mul 98 c=1/21

! extract underscan
copy 97 $src
box 20 sc=31 nc=21 sr=1 nr=522
window 97 box=20
box 20 sc=31 nc=21 sr=51 nr=522-100
abx 97 box=20 mean=mean silent
sub 97 c=mean
fixhead 97 origin
bin 97 binr=20 binc=1
fixhead 97 origin
mul 97 c=1/21

! determine shift from overscan to underscan
! the correct peak will occur close to a lag of -40
cross 96 97 98 rad=60
box 20 cr=-40 nr=30 sc=0 nc=1
window 96 box=20
shift 96 dr=61
abx 96 high_row=r silent
box 20 cr=r nr=5 sc=0 nc=1
window 96 box=20
rotate 96 left
poly 96 ord=2 load silent

! coadd underscan into overscan
! ignore the first 40 rows of underscan as they have additional structure
create 95 sc=1 sr=1 nc=1 nr=522-int[shift] const=0
add 95 98
shift 97 dr=-shift
box 20 sc=1 sr=-int[shift]+40 nc=1 nr=522-40
window 97 box=20
add 95 97
box 20 sc=1 sr=-int[shift]+40 nc=1 nr=522+int[shift]-40
mul 95 c=0.5 box=20

! create ripple image
create 94 sc=1 sr=1 nc=586 nr=522 const=0
do c=1,586
	add 94 95 dc=c-1 dr=int[-(c-576)/535*shift]

! subtract ripple image
sub $dst 94

APO APO APO APO APO  Apache Point Observatory 3.5m  APO APO APO
APO  This is message 14 in the apo35-dis archive. You can find
APO  the archive on
APO  To join/leave the list, send mail to
APO  To post a message, mail it to