# WHT/ISIS¶

In this example, we reduced a faint low-resolution spectrum of an ultracool white dwarf taken with the Intermediate-dispersion Spectrograph and Imaging System (ISIS) on the William Herschel Telescope (WHT).

1. Import all the required libraries:

import sys
import numpy as np
from astropy.io import fits
from aspired import image_reduction
from aspired import spectral_reduction

2. In order to perform image reduction, users have to provide a file list of the spectra to be reduced. Alternatively, a fits.hdu.image.PrimaryHDU object can be supplied For the science spectral image, the file list is contained in examples/sprat_LHS6328.list

#flat, sprat_LHS6328_Hiltner102_raw/v_slit_red_1.fits.gz
dark, sprat_LHS6328_Hiltner102_raw/v_dark_1.fits.gz
arc, sprat_LHS6328_Hiltner102_raw/v_a_20180810_13_1_0_1.fits.gz
light, sprat_LHS6328_Hiltner102_raw/v_e_20180810_12_1_0_0.fits.gz
light, sprat_LHS6328_Hiltner102_raw/v_e_20180810_12_2_0_0.fits.gz
light, sprat_LHS6328_Hiltner102_raw/v_e_20180810_12_3_0_0.fits.gz
light, sprat_LHS6328_Hiltner102_raw/v_e_20180810_12_4_0_0.fits.gz
light, sprat_LHS6328_Hiltner102_raw/v_e_20180810_12_5_0_0.fits.gz


To reduce the image with the built-in reduction method ImageReduction, execute the following, the rederer options are those of plotly’s. In all the following lines, we are saving the plotly figures as iframes that can be viewed and interacted by using a browser:

# Set the dispersion direction
Saxis = 0

science_frame = image_reduction.ImageReduction()
science_frame.set_properties(saxis=Saxis)
science_frame.reduce()
science_frame.inspect(
filename='reduced_image_pso1801p6254',
save_iframe=True)


and for the standard spectral image, the file list is contained in isis_g93m48.list

#flat, sprat_LHS6328_Hiltner102_raw/v_slit_red_1.fits.gz
dark, sprat_LHS6328_Hiltner102_raw/v_dark_1.fits.gz
arc, sprat_LHS6328_Hiltner102_raw/v_a_20180810_28_1_0_1.fits.gz
light, sprat_LHS6328_Hiltner102_raw/v_s_20180810_27_1_0_0.fits.gz


Similar to the science frame, execute the following:

standard_frame = image_reduction.ImageReduction()
standard_frame.set_properties(saxis=Saxis)
standard_frame.reduce()
standard_frame.inspect()

3. With the image reduced, we can start performing spectral reduction, starting from the 2D spectrum with the customised setting to provide the appropriate read noise, gain, seeing and spatial masking:

# spec mask

# initialise the two spectral_reduction.TwoDSpec()
pso = spectral_reduction.TwoDSpec(
science_frame,
cosmicray=False,
gain=0.98,
seeing=1.1,
silence=True)

g93 = spectral_reduction.TwoDSpec(
standard_frame,

pso.ap_trace(save_iframe=True, filename='pso_trace')