UsageΒΆ

The scan package can perform reductions from the Python command line interface using the Reduction object. Each object must be initialized with the name of the observing instrument. The reduction must then be run on one or more input files using the Reduction.run() method.

The following example using the example instrument to create a simulated FITS file and perform a simple reduction.

from sofia_redux.scan.reduction.reduction import Reduction

from astropy import units
from astropy.io import fits
from astropy.wcs import WCS
import matplotlib.pyplot as plt
from astropy.visualization import astropy_mpl_style
import os
import tempfile

plt.style.use(astropy_mpl_style)

work_path = tempfile.mkdtemp(suffix='scan_example')
filename = os.path.join(work_path, 'simulated_data.fits')

# Initialize the reduction for the example instrument
reduction = Reduction('example')

# Create a simulated data file
reduction.info.write_simulated_hdul(
    filename, fwhm=10 * units.arcsec, scan_type='daisy',
    n_oscillations=22, radial_period=12 * units.second,
    ra='17h45m39.60213s', dec='-29d00m22.0000s',
    source_type='single_gaussian', constant_speed=True,
    s2n=30.0)

# Perform the reduction
hdul = reduction.run(filename, outpath=work_path,
                     blacklist='correlated.bias')

# Display the results
# The contents of the output FITS file and the hdul above are identical.
output_file = os.path.join(work_path, 'Simulation.Simulation.1.fits')
image_data = fits.getdata(output_file, ext=0)
wcs = WCS(fits.getheader(output_file, ext=0))
plt.subplot(projection=wcs)
plt.imshow(image_data, origin='lower')
plt.xlabel('Right Ascension')
plt.ylabel('Declination')

(Source code, png, hires.png, pdf)

../../_images/scan_usage-1.png

The exact nature of the reduction depends heavily on the configuration which may be read from default files, or passed in as optional keyword arguments. The keys and values should correspond to those listed in the glossary. A nested dictionary may be directly passed in, and/or a flattened dot separated set of options may also be supplied. For example, all of the reductions below will run using the same configuration:

reduction.run(files, correlated={'sky': {'gainrange': '0.1:1'}}, deep=True)

reduction.run(files, correlated={'sky.gainrange': '0.1:1'}, deep=True)

reduction.run(files, options={'correlated.sky.gainrange': '0.1:1',
                              'deep':True})

Note that configuration options passed in this way will remain locked by default for the remainder of the reduction. For more flexible options, please consider creating a separate configuration file.