FIFI-LS Redux Developer’s Manual

Introduction

Document Purpose

This document is intended to provide all the information necessary to maintain the FIFI-LS Redux pipeline, used to produce Level 2, 3, and 4 reduced products for FIFI-LS data, in either manual or automatic mode. Level 2 is defined as data that has been processed to correct for instrumental effects; Level 3 is defined as data that has been flux-calibrated; Level 4 is any higher data product. A more general introduction to the data reduction procedure and the scientific justification of the algorithms is available in the FIFI-LS Redux User’s Manual.

This manual applies to FIFI-LS Redux version 2.7.0.

Redux Revision History

FIFI-LS Redux was developed as four separate reduction packages: PyFIFI, which provides the data processing algorithms; PypeUtils, which provides general-purpose scientific algorithms; PySpextool, which provides some supporting libraries for spectroscopic data reduction; and Redux, which provides the interactive GUI, the automatic pipeline wrapper, and the supporting structure to call the FIFI-LS algorithms.

PyFIFI is a Python translation of an IDL package developed for the reduction of FIFI-LS data. Dr. Kaori Nishikida and Dr. Randolf Klein initially developed a prototype of the algorithms, around 2004. Development in IDL was picked up in February 2015 by Jennifer Holt and Dr. William Vacca for USRA/SOFIA, with reference to a separate FIFI-LS pipeline, developed in LabView by Rainer Hoenle. Integration into the Redux interface and completion of the reduction algorithms was undertaken by Melanie Clarke and Dr. William Vacca in September 2015. Version 1.0.0 of the package was released for use at SOFIA in November 2015. Version 2.0.0 of the package was entirely reimplemented in Python, primarily by Daniel Perera, with support and integration by Melanie Clarke.

PypeUtils was developed as a shared code base for SOFIA Python pipelines, primarily by Daniel Perera for USRA/SOFIA. It contains any algorithms or utilities likely to be of general use for data reduction pipelines. From this package, the FIFI-LS pipeline uses some FITS handling utilities, multiprocessing tools, and interpolation and resampling functions.

Like PyFIFI, PySpextool is a translation of an earlier SOFIA IDL library, called FSpextool. FSpextool was built on top of a pre-release version of Spextool 4, an IDL-based package developed by Dr. Michael Cushing and Dr. William Vacca for the reduction of data from the SpeX instrument on the NASA Infrared Telescope Facility (IRTF). Spextool was originally released in October 2000, and has undergone a number of major and minor revisions since then. The last stable public release was v4.1, released January 2016. As Spextool does not natively support automatic command-line processing, FSpextool for SOFIA adapted the Spextool library to the SOFIA architecture and instruments; version 1.0.0 was originally released for use at SOFIA in July 2013. PySpextool is a Python translation of the core algorithms in this package, developed by Daniel Perera and Melanie Clarke, and first released at SOFIA for use in the FIFI-LS pipeline in October 2019.

Redux was originally developed to be a general-purpose interface to IDL data reduction algorithms. It provided an interactive GUI and an object-oriented structure for calling data reduction processes, but it did not provide its own data reduction algorithms. It was developed by Melanie Clarke, for the SOFIA DPS team, to provide a consistent front-end to the data reduction pipelines for multiple instruments and modes, including FIFI-LS. It was redesigned and reimplemented in Python, with similar functionality, to support Python pipelines for SOFIA. The first release of the IDL version was in December 2013; the Python version was first released to support the HAWC+ pipeline in September 2018.

In 2020, all SOFIA pipeline packages were unified into a single package, called sofia_redux. The interface package (Redux) was renamed to sofia_redux.pipeline, PypeUtils was renamed to sofia_redux.toolkit, PySpextool was renamed to sofia_redux.spectroscopy, and the PyFIFI package was renamed to sofia_redux.instruments.fifi_ls. An additional package, to support data visualization, was added as sofia_redux.visualization.

In 2021 and 2022, additional optional features from the sofia_redux package were incorporated into the FIFI-LS pipeline. The interface provides some interactive photometry routines via sofia_redux.calibration and some additional support for on-the-fly mode data via sofia_redux.scan.

Overview of Software Structure

The sofia_redux package has several sub-modules organized by functionality:

sofia_redux
├── calibration
├── instruments
│   ├── exes
│   ├── fifi_ls
│   ├── flitecam
│   ├── forcast
│   └── hawc
├── pipeline
├── scan
├── spectroscopy
├── toolkit
└── visualization

The modules used in the FIFI-LS pipeline are described below.

sofia_redux.instruments.fifi_ls

The sofia_redux.instruments.fifi_ls package is written in Python using standard scientific tools and libraries.

The data reduction algorithms used by the pipeline are straight-forward functions that generally take an input file name, corresponding to a FIFI-LS FITS file, as an argument and write an output file to disk as a result. The return value in this case is the output file name. Optionally, the data may be supplied and returned as an astropy.io.fits.HDUList data structure.

Other optional parameters for these functions are provided via keyword parameters in the function calls.

sofia_redux.spectroscopy

The sofia_redux.spectroscopy package contains a library of general-purpose spectroscopic functions. The FIFI-LS pipeline uses a few of the algorithms from this library, for spectroscopic smoothing and binning.

sofia_redux.toolkit

sofia_redux.toolkit is a repository for classes and functions of general usefulness, intended to support multiple SOFIA pipelines. It contains several submodules, for interpolation, multiprocessing support, numerical calculations, and FITS handling. Most utilities are simple functions that take input as arguments and return output values. Some more complicated functionality is implemented in several related classes; see the sofia_redux.toolkit.resampling module documentation for more information.

sofia_redux.visualization

The sofia_redux.visualization package contains plotting and display routines, relating to visualizing SOFIA data. For the FIFI-LS pipeline, this package currently provides a module that supports generating quick-look preview images.

sofia_redux.calibration

The sofia_redux.calibration module contains flux calibration algorithms used to perform photometric or flux calibration calculations on input images and return their results. For the FIFI-LS pipeline, this package currently provides support for interactive photometry tools in the pipeline interface.

sofia_redux.scan

The scan package (sofia_redux.scan) package implements an iterative map reconstruction algorithm, for reducing continuously scanned observations. In the FIFI-LS pipeline, it is used to provide optional support for removing residual correlated gain and noise in on-the-fly (OTF) mode observations.

For more information on the design and structure of the scan package, see the HAWC+ pipeline developer’s manual and the software documentation for the sofia_redux.scan module.

sofia_redux.pipeline

Design

Redux is designed to be a light-weight interface to data reduction pipelines. It contains the definitions of how reduction algorithms should be called for any given instrument, mode, or pipeline, in either a command-line interface (CLI) or graphical user interface (GUI) mode, but it does not contain the reduction algorithms themselves.

Redux is organized around the principle that any data reduction procedure can be accomplished by running a linear sequence of data reduction steps. It relies on a Reduction class that defines what these steps are and in which order they should be run (the reduction “recipe”). Reductions have an associated Parameter class that defines what parameters the steps may accept. Because reduction classes share common interaction methods, they can be instantiated and called from a completely generic front-end GUI, which provides the capability to load in raw data files, and then:

  1. set the parameters for a reduction step,

  2. run the step on all input data,

  3. display the results of the processing,

and repeat this process for every step in sequence to complete the reduction on the loaded data. In order to choose the correct reduction object for a given data set, the interface uses a Chooser class, which reads header information from loaded input files and uses it to decide which reduction object to instantiate and return.

The GUI is a PyQt application, based around the Application class. Because the GUI operations are completely separate from the reduction operations, the automatic pipeline script is simply a wrapper around a reduction object: the Pipe class uses the Chooser to instantiate the Reduction, then calls its reduce method, which calls each reduction step in order and reports any output files generated. Both the Application and Pipe classes inherit from a common Interface class that holds reduction objects and defines the methods for interacting with them. The Application class additionally may start and update custom data viewers associated with the data reduction; these should inherit from the Redux Viewer class.

All reduction classes inherit from the generic Reduction class, which defines the common interface for all reductions: how parameters are initialized and modified, how each step is called. Each specific reduction class must then define each data reduction step as a method that calls the appropriate algorithm.

The reduction methods may contain any code necessary to accomplish the data reduction step. Typically, a reduction method will contain code to fetch the parameters for the method from the object’s associated Parameters class, then will call an external data reduction algorithm with appropriate parameter values, and store the results in the ‘input’ attribute to be available for the next processing step. If processing results in data that can be displayed, it should be placed in the ‘display_data’ attribute, in a format that can be recognized by the associated Viewers. The Redux GUI checks this attribute at the end of each data reduction step and displays the contents via the Viewer’s ‘display’ method.

Parameters for data reduction are stored as a list of ParameterSet objects, one for each reduction step. Parameter sets contain the key, value, data type, and widget type information for every parameter. A Parameters class may generate these parameter sets by defining a default dictionary that associates step names with parameter lists that define these values. This dictionary may be defined directly in the Parameters class, or may be read in from an external configuration file or software package, as appropriate for the reduction.

FIFI-LS Redux

To interface to the FIFI-LS pipeline algorithms, Redux defines the FIFILSReduction and FIFILSParameters classes. See Fig. 113 for a sketch of the Redux classes used by the FIFI-LS pipeline. The FIFILSReduction class calls the sofia_redux.instruments.fifi_ls reduction functions, with support from the sofia_redux.toolkit and sofia_redux.spectroscopy packages. The FIFILSParameters class defines default parameter values for all reduction steps.

Since the FIFI-LS reduction algorithms are simple functions, the FIFILSReduction class provides a wrapper method for each step in the pipeline:

The recipe attribute for the reduction class specifies the above steps, in that order. Most FIFI-LS steps provide a wrapper function that allows processing to proceed in parallel, if desired, when called on a list of input files. The FIFILSReduction interface uses these wrapper functions where appropriate, and the FIFILSParameters class defines the defaults for the parallel processing capabilities.

If an intermediate file is loaded, its product type is identified from the PRODTYPE keyword in its header, and the prodtype_map attribute is used to identify the next step in the recipe. This allows reductions to be picked up at any point, from a saved intermediate file. For more information on the scientific goals and methods used in each step, see the FIFI-LS Redux User’s Manual.

The FIFILSReduction class also contains several helper functions, that assist in reading and writing files on disk, and identifying which data to display in the interactive GUI. Display is performed via the QADViewer class provided by the Redux package.

FIFI-LS Redux Classes

Fig. 113 Redux classes used in the FIFI-LS pipeline.

Detailed Algorithm Information

The following sections list detailed information on the functions and procedures most likely to be of interest to the developer.

sofia_redux.instruments.fifi_ls

sofia_redux.instruments.fifi_ls.apply_static_flat Module

Functions

clear_flat_cache()

Clear all data from the flat cache.

get_flat_from_cache(specfile, spatfile, obsdate)

Retrieves flat data from the flat cache.

store_flat_in_cache(specfile, spatfile, ...)

Store flat data in the flat cache.

get_flat(header)

Return flat data table

apply_flat_to_hdul(hdul, flatdata[, skip_err])

Divide extension data by static flat.

apply_static_flat(filename[, outdir, write, ...])

Apply pre-reduced and normalized flat to FIFI-LS data.

wrap_apply_static_flat(files[, outdir, ...])

Wrapper for apply_static_flat over multiple files.

sofia_redux.instruments.fifi_ls.combine_grating_scans Module

Functions

get_lambda_overlap(hdul)

Get overlapping wavelengths for all extensions.

combine_extensions(hdul[, correct_bias])

Combine all extensions into a single extension.

combine_grating_scans(filename[, ...])

Combine separate grating positions in FIFI-LS data.

wrap_combine_grating_scans(files[, outdir, ...])

Wrapper for combine_grating_scans over multiple files.

sofia_redux.instruments.fifi_ls.combine_nods Module

Functions

classify_files(filenames[, offbeam])

Extract various properties of all files for subsequent combination.

combine_extensions(df[, b_nod_method])

Find a B nod for each A nod.

combine_nods(filenames[, offbeam, ...])

Combine nods of ramp-fitted, chop-subtracted data.

sofia_redux.instruments.fifi_ls.correct_wave_shift Module

Functions

correct_lambda(hdul)

Correct LAMBDA extension in HDU list.

correct_wave_shift(filename[, write, outdir])

Correct wavelength shift due to motion of the Earth.

wrap_correct_wave_shift(files[, outdir, ...])

Wrapper for correct_wave_shift over multiple files.

sofia_redux.instruments.fifi_ls.fit_ramps Module

Functions

get_readout_range(header)

Returns the readout range as extracted from header.

resize_data(data, readout_range, indpos[, ...])

Trim and reshape data to separate ramps.

fit_data(data[, s2n, threshold, ...])

Applies linear fit (y = ax + b) over the second dimension of a 4D array.

process_extension(hdu, readout_range[, ...])

Wrapper to process a single HDU extension.

fit_ramps(filename[, s2n, threshold, ...])

Fit straight lines to raw voltage ramps to calculate corresponding flux.

wrap_fit_ramps(files[, s2n, threshold, ...])

Wrapper for fit_ramps over multiple files.

sofia_redux.instruments.fifi_ls.flux_calibrate Module

Functions

apply_response(hdul, response)

Apply response data to data in an HDUList.

flux_calibrate(filename[, response_file, ...])

Convert spectra to physical flux units.

wrap_flux_calibrate(files[, outdir, ...])

Wrapper for flux_calibrate over multiple files.

sofia_redux.instruments.fifi_ls.get_atran Module

Functions

clear_atran_cache()

Clear all data from the atran cache.

get_atran_from_cache(atranfile, resolution)

Retrieves atmospheric transmission data from the atran cache.

store_atran_in_cache(atranfile, resolution, ...)

Store atran data in the atran cache.

get_atran(header[, resolution, filename, ...])

Retrieve reference atmospheric transmission data.

sofia_redux.instruments.fifi_ls.get_badpix Module

Functions

clear_badpix_cache()

Clear all data from the badpix cache.

get_badpix_from_cache(badpixfile)

Retrieves bad pixel masks or default file from the badpix cache.

store_badpix_in_cache(badpixfile, badpix)

Store badpix data in the badpix cache.

read_defaults_table()

Read the badpix defaults table.

get_badpix(header[, filename])

Retrieve bad pixel data.

sofia_redux.instruments.fifi_ls.get_lines Module

Functions

get_lines()

Retrieve FIFI-LS lines of interest.

sofia_redux.instruments.fifi_ls.get_resolution Module

Functions

clear_resolution_cache()

Clear all data from the resolution cache.

get_resolution_from_cache(resfile)

Retrieves table from the resolution cache.

store_resolution_in_cache(resfile, resolution)

Store resolution data in the resolution cache.

get_resolution(header[, wmean, spatial])

Retrieve expected spectral or spatial resolution.

sofia_redux.instruments.fifi_ls.get_response Module

Functions

clear_response_cache()

Clear all data from the response cache.

get_response_from_cache(responsefile)

Retrieves response data from the response cache.

store_response_in_cache(responsefile, response)

Store response data in the response cache

get_response(header[, filename])

Retrieve instrumental response data.

sofia_redux.instruments.fifi_ls.lambda_calibrate Module

Functions

clear_wavecal_cache()

Clear all data from the wavecal cache.

get_wavecal_from_cache(wavecalfile)

Retrieves wavelength calibration data from the wavecal cache.

store_wavecal_in_cache(wavecalfile, wavecal)

Store wavecal data in the wavecal cache.

read_wavecal([calfile])

Read and return the data from the wavecal file.

wave(ind, date, dichroic[, blue, wavecal])

Calculate wavelengths for each spectral pixel.

lambda_calibrate(filename[, obsdate, ...])

Apply spectral calibration.

wrap_lambda_calibrate(files[, outdir, ...])

Wrapper for lambda_calibrate over multiple files.

sofia_redux.instruments.fifi_ls.make_header Module

Functions

create_requirements_table([default_file, ...])

Create the header keyword requirements definition table.

clear_requirements_table()

Clear all data from the requirements cache.

get_keyword_comments()

Get the keyword comments table from the cache.

get_keyword_table([filename])

Returns a dataframe containing the header requirements.

get_keyword_comments_table([filename])

Returns a dictionary containing header keyword comments.

update_basehead(basehead, table, headers)

Update the base header with values that may be missing.

order_headers(headers)

Order headers based on contents.

make_header([headers, checkheader, ...])

Standardize and combine input headers.

sofia_redux.instruments.fifi_ls.readfits Module

Functions

readfits(filename[, checkheader])

Read a FIFI-LS FITS file and return data and header.

sofia_redux.instruments.fifi_ls.resample Module

Functions

combine_files(filenames[, naif_id_key, ...])

Combine all files into a single dataset.

get_grid_info(combined[, oversample, ...])

Get output coordinate system and useful parameters.

generate_exposure_map(combined, grid_info[, ...])

Create the exposure map from combined files.

rbf_mean_combine(combined, grid_info[, ...])

Combines multiple datasets using radial basis functions and mean combine.

local_surface_fit(combined, grid_info[, ...])

Resamples combined data on regular grid using local polynomial fitting.

make_hdul(combined, grid_info[, append_weights])

Create final HDU List from combined data and gridding info.

resample(filenames[, target_x, target_y, ...])

Resample unevenly spaced FIFI-LS pixels to regular grid.

perform_scan_reduction(filenames[, ...])

Reduce the files using a scan reduction.

cleanup_scan_reduction(combined)

Remove all temporary files created during a scan reduction.

sofia_redux.instruments.fifi_ls.spatial_calibrate Module

Functions

clear_spatial_cache()

Clear all data from the spatial cache.

get_spatial_from_cache(spatialfile, obsdate)

Retrieves spatial data from the spatial cache.

store_spatial_in_cache(spatialfile, obsdate, ...)

Store spatial data in the spatial cache.

offset_xy(date[, blue])

Calculate X and Y offsets for each spaxel.

get_deltavec_coeffs(header, obsdate[, ...])

Read the correct delta vector spatial coefficients.

calculate_offsets(hdul[, obsdate, flipsign, ...])

Calculate X and Y spatial offsets.

spatial_calibrate(filename[, obsdate, ...])

Apply spatial calibration (x and y offsets).

wrap_spatial_calibrate(files[, outdir, ...])

Wrapper for spatial_calibrate over multiple files.

sofia_redux.instruments.fifi_ls.split_grating_and_chop Module

Functions

get_channel(hdul[, channel_index])

Returns RED or BLUE channel extracted from header and data.

get_split_params(hdul[, channel_index, ...])

Check if a file can be split by basic header checks.

trim_data(hdul, params)

Remove partial ramps and "unpaired" chop plateaus.

name_output_files(hdul)

Names the split files.

separate_chops(hdul, params)

Separate data into different files, by chop index.

split_grating_and_chop(filename[, write, outdir])

Split FIFI-LS raw data file into separate FITS files.

wrap_split_grating_and_chop(files[, outdir, ...])

Wrapper for split_grating_and_chop over multiple files.

sofia_redux.instruments.fifi_ls.subtract_chops Module

Functions

get_chop_pair(chop0_file)

Given the chop 0 filename, return the chop 0 and chop 1 HDU lists.

subtract_extensions(hdul0, hdul1[, add_only])

Subtract extensions in the correct order.

subtract_chops(chop0_file[, outdir, ...])

Subtract chops of ramp-fitted data.

wrap_subtract_chops(files[, outdir, ...])

Wrapper for subtract_chops over multiple files.

sofia_redux.instruments.fifi_ls.telluric_correct Module

Functions

apply_atran(hdul, atran[, cutoff, ...])

Apply transmission data to data in an HDUList.

telluric_correct(filename[, atran_dir, ...])

Correct spectra for atmospheric absorption features.

wrap_telluric_correct(files[, outdir, ...])

Wrapper for telluric_correct over multiple files.

sofia_redux.toolkit

sofia_redux.toolkit.utilities.fits Module

Functions

hdinsert(header, key, value[, comment, ...])

Insert or replace a keyword and value in the header

add_history(header, msg[, prefix, refkey])

Add HISTORY message to a FITS header before the pipeline.

add_history_wrap(prefix)

Make a function to add HISTORY messages to a header, prefixed with a string.

robust_read(filename[, data_hdu, ...])

Retrieve the data and header from a FITS file

getheader(filename[, hdu, verbose])

Returns the header of a FITS file

getdata(filename[, hdu, verbose])

Returns the data from a FITS file

header_to_chararray(header)

Convert a FITS header to an array of strings

chararray_to_header(chararray)

Convert an array of strings to a FITS header

gethdul(filename[, verbose])

Returns the HDUList from a FITS file

write_hdul(hdul[, outdir, overwrite])

Write a HDULists to disk.

get_key_value(header, key[, default])

Get a key value from a header.

set_log_level(level)

Context manager to temporarily set the log level.

order_headers(headers)

Order headers based on contents.

merge_headers(headers, keyword_configuration)

Merge input headers.

sofia_redux.toolkit.utilities.multiprocessing Module

Functions

get_core_number([cores])

Returns the maximum number of CPU cores available

relative_cores(jobs)

Return the actual number of cores to use for a given number of jobs.

valid_relative_jobs(jobs)

Return a valid number of jobs in the range 1 <= jobs <= max_cores.

multitask(func, iterable, args, kwargs[, ...])

Process a series of tasks in serial, or in parallel using joblib.

pickle_object(obj, filename)

Pickle a object and save to the given filename.

unpickle_file(filename)

Unpickle a string argument if it is a file, and return the result.

pickle_list(object_list[, prefix, ...])

Pickle a list of objects to a temporary directory.

unpickle_list(pickle_files[, delete])

Restore pickle files to objects in-place.

in_main_thread()

Return whether the process is running in the main thread.

log_with_multi_handler(logger)

Context manager to temporarily log messages for unique processes/threads

log_for_multitask(logger)

Context manager to output log messages during multiprocessing.

purge_multitask_logs(log_directory, ...[, ...])

Remove all temporary logging files/directories and handle log records.

wrapped_with_logger(func, ...)

Return the results of the function in multitask and save log records.

log_records_to_pickle_file(logger, pickle_file)

Store the log records in a pickle file rather than emitting.

wrap_function(func, args[, kwargs, logger, ...])

Wrap a function for use with multitask().

Classes

MultitaskHandler()

A log handler for multitask.

Class Inheritance Diagram
digraph inheritance7a3b669de2 { bgcolor=transparent; rankdir=LR; size=""; "Filterer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A base class for loggers and handlers which allows them to share"]; "Handler" [URL="https://docs.python.org/3/library/logging.html#logging.Handler",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Handler instances dispatch logging events to specific destinations."]; "Filterer" -> "Handler" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "MultitaskHandler" [URL="../../../api/sofia_redux.toolkit.utilities.multiprocessing.MultitaskHandler.html#sofia_redux.toolkit.utilities.multiprocessing.MultitaskHandler",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A log handler for multitask."]; "Handler" -> "MultitaskHandler" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.toolkit.resampling Package

Functions

apply_mask_to_set_arrays(mask, data, phi, ...)

Set certain arrays to a fixed size based on a mask array.

array_sum(mask)

Return the sum of an array.

calculate_adaptive_distance_weights_scaled(...)

Returns distance weights based on offsets and scaled adaptive weighting.

calculate_adaptive_distance_weights_shaped(...)

Returns distance weights based on offsets and shaped adaptive weighting.

calculate_distance_weights(coordinates, ...)

Returns a distance weighting based on coordinate offsets.

calculate_distance_weights_from_matrix(...)

Returns distance weights based on coordinate offsets and matrix operation.

calculate_fitting_weights(errors, weights[, ...])

Calculate the final weighting factor based on errors and other weights.

check_edge_with_box(coordinates, reference, ...)

Defines a hyperrectangle edge around a coordinate distribution.

check_edge_with_distribution(coordinates, ...)

Defines an edge based on statistical deviation from a sample distribution.

check_edge_with_ellipsoid(coordinates, ...)

Defines an ellipsoid edge around a coordinate distribution.

check_edge_with_range(coordinates, ...)

Defines an edge based on the range of coordinates in each dimension.

check_edges(coordinates, reference, mask, ...)

Determine whether a reference position is within a distribution "edge".

check_orders(orders, coordinates, reference)

Checks the sample distribution is suitable for a polynomial fit order.

check_orders_with_bounds(orders, ...[, ...])

Checks maximum order for sample coordinates bounding a reference.

check_orders_with_counts(orders, counts[, ...])

Checks maximum order based only on the number of samples.

check_orders_without_bounds(orders, coordinates)

Checks maximum order based on unique samples, irrespective of reference.

clean_image(image[, error, mask, window, ...])

Uses ResamplePolynomial to correct NaNs in image and/or supplied in mask.

convert_to_numba_list(thing)

Converts a Python iterable to a Numba list for use in jitted functions.

coordinate_covariance(coordinates[, mean, ...])

Calculate the covariance of a distribution.

coordinate_mean(coordinates[, mask])

Returns the mean coordinate of a distribution.

covariance_matrix_inverse(amat, phi, error, ...)

Calculates the inverse covariance matrix inverse of the fit coefficients.

derivative_mscp(coefficients, phi_samples, ...)

Return the weighted mean-square-cross-product (mscp) of sample derivatives.

distribution_variances(coordinates[, mean, ...])

Return variance at each coordinate based on coordinate distribution.

estimated_covariance_matrix_inverse(phi, ...)

Calculates covariance matrix inverse of fit coefficients from mean error.

evaluate_derivative(coefficients, phi_point, ...)

Calculates the derivative of a polynomial at a single point.

evaluate_derivatives(coefficients, ...)

Calculates the derivative of a polynomial at multiple points.

fasttrapz(y, x)

Fast 1-D integration using Trapezium method.

fit_phi_value(phi, coefficients)

Returns the dot product of phi and coefficients.

fit_phi_variance(phi, inv_covariance)

Calculates variance given the polynomial terms of a coordinate.

fit_residual(data, phi, coefficients)

Calculates the residual of a polynomial fit to data.

half_max_sigmoid(x[, x_half, k, a, c, q, b, v])

Evaluate a special case of the logistic function where f(x0) = 0.5.

logistic_curve(x[, x0, k, a, c, q, b, v])

Evaluate the generalized logistic function.

multiple_polynomial_terms(coordinates, exponents)

Derive polynomial terms for a coordinate set given polynomial exponents.

multivariate_gaussian(covariance, coordinates)

Return values of a multivariate Gaussian in K-dimensional coordinates.

no_fit_solution(set_index, point_index, ...)

Fill output arrays with set values on fit failure.

offset_variance(coordinates, reference[, ...])

Variance at reference coordinate derived from distribution uncertainty.

polynomial_derivative_map(exponents)

Creates a mapping from polynomial exponents to derivatives.

polynomial_exponents(order[, ndim, ...])

Define a set of polynomial exponents.

polynomial_terms(coordinates, exponents)

Derive polynomial terms given coordinates and polynomial exponents.

relative_density(sigma, counts, weight_sum)

Returns the relative density of samples compared to a uniform distribution.

resamp(coordinates, data, *locations[, ...])

ResamplePolynomial data using local polynomial fitting.

resampler(coordinates, data, *locations[, ...])

ResamplePolynomial data using local polynomial fitting.

scale_coordinates(coordinates, scale, offset)

Apply scaling factors and offsets to N-dimensional data.

scale_forward_scalar(coordinate, scale, offset)

Applies the function f(x) = (x - offset) / scale to a single coordinate.

scale_forward_vector(coordinates, scale, offset)

Applies the function f(x) = (x - offset) / scale to a coordinate array.

scale_reverse_scalar(coordinate, scale, offset)

Applies the function f(x) = (x * scale) + offset to a single coordinate.

scale_reverse_vector(coordinates, scale, offset)

Applies the function f(x) = (x * scale) + offset to a coordinate array.

scaled_adaptive_weight_matrices(sigma, ...)

Wrapper for scaled_adaptive_weight_matrix over multiple values.

scaled_adaptive_weight_matrix(sigma, rchi2)

Scales a Gaussian weighting kernel based on a prior fit.

shaped_adaptive_weight_matrices(sigma, ...)

Wrapper for shaped_adaptive_weight_matrix over multiple values.

shaped_adaptive_weight_matrix(sigma, rchi2, ...)

Shape and scale the weighting kernel based on a prior fit.

sigmoid(x[, factor, offset])

Evaluate a scaled and shifted logistic function.

single_polynomial_terms(coordinate, exponents)

Derive polynomial terms for a single coordinate given polynomial exponents.

solve_amat_beta(phi, data, weights)

Convenience function returning matrices suitable for linear algebra.

solve_coefficients(amat, beta)

Find least squares solution of Ax=B and rank of A.

solve_fit(window_coordinates, window_phi, ...)

Solve for a fit at a single coordinate.

solve_fits(sample_indices, ...[, is_covar, ...])

Solve all fits within one intersection block.

solve_inverse_covariance_matrices(phi, ...)

Inverse covariance matrices on fit coefficients from errors and residuals.

solve_mean_fit(data, error, weight[, ...])

Return the weighted mean of data, variance, and reduced chi-squared.

solve_polynomial_fit(phi_samples, phi_point, ...)

Derive a polynomial fit from samples, then calculate fit at single point.

solve_rchi2_from_error(residuals, weights, ...)

Return the reduced chi-squared given residuals and sample errors.

solve_rchi2_from_variance(residuals, ...[, ...])

Return the reduced chi-squared given residuals and constant variance.

sscp(matrix[, weight, normalize])

Calculate the sum-of-squares-and-cross-products of a matrix.

stretch_correction(rchi2, density, ...)

A sigmoid function used by the "shaped" adaptive resampling algorithm.

update_mask(weights, mask)

Updates a mask, setting False values where weights are zero or non-finite.

variance_from_offsets(offsets, covariance[, ...])

Determine the variance given offsets from the expected value.

weighted_fit_variance(residuals, weights[, ...])

Calculate variance of a fit from the residuals of the fit to data.

weighted_mean(data, weights[, weightsum])

Calculate the weighted mean of a data set.

weighted_mean_variance(variance, weights[, ...])

Calculated mean weighted variance.

weighted_variance(error, weights[, weightsum])

Utility function to calculate the biased weighted variance.

Classes

BaseGrid(*grid[, scale_factor, ...])

Define and initialize a resampling grid.

PolynomialTree(argument[, shape, ...])

Create a tree structure for use with the resampling algorithm.

Resample

alias of ResamplePolynomial

ResampleKernel(coordinates, data, kernel[, ...])

Class to resample data using kernel convolution.

ResamplePolynomial(coordinates, data[, ...])

Class to resample data using local polynomial fits.

sofia_redux.spectroscopy

sofia_redux.spectroscopy.earthvelocity Module

Functions

cartesian_lsr([definition])

Find the radial LSR velocity towards sky coordinates.

cartesian_helio(time[, center, location])

Calculate the Cartesian velocity of the Sun.

earthvelocity(ra, dec, time[, equinox, ...])

Provide velocities of the Earth towards a celestial position.

sofia_redux.spectroscopy.radvel Module

Functions

radvel(header[, equinox])

Calculate the expected extrinsic radial velocity wavelength shift.

sofia_redux.spectroscopy.smoothres Module

Functions

smoothres(x, y, resolution[, siglim])

Smooth a data to a constant resolution

sofia_redux.calibration

sofia_redux.calibration.pipecal_photometry Module

Fit a source and perform aperture photometry.

Functions

pipecal_photometry(image, variance[, ...])

Perform aperture photometry and profile fits on image data.

sofia_redux.scan

sofia_redux.scan.reduction.reduction Module

Classes

Reduction(instrument[, configuration_file, ...])

Initialize the reduction object.

Class Inheritance Diagram
digraph inheritancee2df6a715d { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "Reduction" [URL="../../../api/sofia_redux.scan.reduction.reduction.Reduction.html#sofia_redux.scan.reduction.reduction.Reduction",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ReductionVersion" -> "Reduction" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ReductionVersion" [URL="../../../api/sofia_redux.scan.reduction.version.ReductionVersion.html#sofia_redux.scan.reduction.version.ReductionVersion",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "ReductionVersion" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.channels.channels Module

Classes

FifiLsChannels([parent, info, size, name])

Initialize FIFI-LS channels.

Class Inheritance Diagram
digraph inheritance71de4c5caf { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "Camera" [URL="../../../api/sofia_redux.scan.channels.camera.camera.Camera.html#sofia_redux.scan.channels.camera.camera.Camera",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "Channels" -> "Camera" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "Channels" [URL="../../../api/sofia_redux.scan.channels.channels.Channels.html#sofia_redux.scan.channels.channels.Channels",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "Channels" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ColorArrangement" [URL="../../../api/sofia_redux.scan.channels.camera.color_arrangement.ColorArrangement.html#sofia_redux.scan.channels.camera.color_arrangement.ColorArrangement",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="The color arrangement channels expand upon the camera channels by defining"]; "Camera" -> "ColorArrangement" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsChannels" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.channels.channels.FifiLsChannels.html#sofia_redux.scan.custom.fifi_ls.channels.channels.FifiLsChannels",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaCamera" -> "FifiLsChannels" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SingleColorArrangement" [URL="../../../api/sofia_redux.scan.channels.camera.single_color_arrangement.SingleColorArrangement.html#sofia_redux.scan.channels.camera.single_color_arrangement.SingleColorArrangement",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Expands upon the color arrangement channels by defining each pixel as a"]; "ColorArrangement" -> "SingleColorArrangement" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaCamera" [URL="../../../api/sofia_redux.scan.custom.sofia.channels.camera.SofiaCamera.html#sofia_redux.scan.custom.sofia.channels.camera.SofiaCamera",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SingleColorArrangement" -> "SofiaCamera" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.channels.channel_numba_functions Module

Functions

get_relative_channel_weights(variance)

Calculate the relative frame weights from the input variance.

sofia_redux.scan.custom.fifi_ls.channels.channel_data.channel_data Module

Classes

FifiLsChannelData([channels])

Initialize the channel data for the FIFI-LS instrument.

Class Inheritance Diagram
digraph inheritancee34475cfa8 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "ChannelData" [URL="../../../api/sofia_redux.scan.channels.channel_data.channel_data.ChannelData.html#sofia_redux.scan.channels.channel_data.channel_data.ChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "FlaggedData" -> "ChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ColorArrangementData" [URL="../../../api/sofia_redux.scan.channels.channel_data.color_arrangement_data.ColorArrangementData.html#sofia_redux.scan.channels.channel_data.color_arrangement_data.ColorArrangementData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Expands upon the channel data by defining each channel as a pixel on a"]; "ChannelData" -> "ColorArrangementData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsChannelData" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.channels.channel_data.channel_data.FifiLsChannelData.html#sofia_redux.scan.custom.fifi_ls.channels.channel_data.channel_data.FifiLsChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SingleColorChannelData" -> "FifiLsChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaChannelData" -> "FifiLsChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FlaggedData" [URL="../../../api/sofia_redux.scan.flags.flagged_data.FlaggedData.html#sofia_redux.scan.flags.flagged_data.FlaggedData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "FlaggedData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SingleColorChannelData" [URL="../../../api/sofia_redux.scan.channels.channel_data.single_color_channel_data.SingleColorChannelData.html#sofia_redux.scan.channels.channel_data.single_color_channel_data.SingleColorChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ColorArrangementData" -> "SingleColorChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaChannelData" [URL="../../../api/sofia_redux.scan.custom.sofia.channels.channel_data.channel_data.SofiaChannelData.html#sofia_redux.scan.custom.sofia.channels.channel_data.channel_data.SofiaChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ColorArrangementData" -> "SofiaChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.channels.channel_group.channel_group Module

Classes

FifiLsChannelGroup(channel_data[, indices, name])

Initialize a FIFI-LS channel group.

Class Inheritance Diagram
digraph inheritancecf4f132c11 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "ChannelData" [URL="../../../api/sofia_redux.scan.channels.channel_data.channel_data.ChannelData.html#sofia_redux.scan.channels.channel_data.channel_data.ChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "FlaggedData" -> "ChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ChannelGroup" [URL="../../../api/sofia_redux.scan.channels.channel_group.channel_group.ChannelGroup.html#sofia_redux.scan.channels.channel_group.channel_group.ChannelGroup",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "FlaggedDataGroup" -> "ChannelGroup" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ChannelData" -> "ChannelGroup" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ColorArrangementData" [URL="../../../api/sofia_redux.scan.channels.channel_data.color_arrangement_data.ColorArrangementData.html#sofia_redux.scan.channels.channel_data.color_arrangement_data.ColorArrangementData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Expands upon the channel data by defining each channel as a pixel on a"]; "ChannelData" -> "ColorArrangementData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsChannelData" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.channels.channel_data.channel_data.FifiLsChannelData.html#sofia_redux.scan.custom.fifi_ls.channels.channel_data.channel_data.FifiLsChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SingleColorChannelData" -> "FifiLsChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaChannelData" -> "FifiLsChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsChannelGroup" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.channels.channel_group.channel_group.FifiLsChannelGroup.html#sofia_redux.scan.custom.fifi_ls.channels.channel_group.channel_group.FifiLsChannelGroup",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "FifiLsChannelData" -> "FifiLsChannelGroup" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "ChannelGroup" -> "FifiLsChannelGroup" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FlaggedData" [URL="../../../api/sofia_redux.scan.flags.flagged_data.FlaggedData.html#sofia_redux.scan.flags.flagged_data.FlaggedData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "FlaggedData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FlaggedDataGroup" [URL="../../../api/sofia_redux.scan.flags.flagged_data_group.FlaggedDataGroup.html#sofia_redux.scan.flags.flagged_data_group.FlaggedDataGroup",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "FlaggedData" -> "FlaggedDataGroup" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SingleColorChannelData" [URL="../../../api/sofia_redux.scan.channels.channel_data.single_color_channel_data.SingleColorChannelData.html#sofia_redux.scan.channels.channel_data.single_color_channel_data.SingleColorChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ColorArrangementData" -> "SingleColorChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaChannelData" [URL="../../../api/sofia_redux.scan.custom.sofia.channels.channel_data.channel_data.SofiaChannelData.html#sofia_redux.scan.custom.sofia.channels.channel_data.channel_data.SofiaChannelData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ColorArrangementData" -> "SofiaChannelData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.frames.frames Module

Classes

FifiLsFrames()

Initialize FIFI-LS frames.

Class Inheritance Diagram
digraph inheritance9892ce9ae4 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FifiLsFrames" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.frames.frames.FifiLsFrames.html#sofia_redux.scan.custom.fifi_ls.frames.frames.FifiLsFrames",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaFrames" -> "FifiLsFrames" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FlaggedData" [URL="../../../api/sofia_redux.scan.flags.flagged_data.FlaggedData.html#sofia_redux.scan.flags.flagged_data.FlaggedData",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "FlaggedData" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "Frames" [URL="../../../api/sofia_redux.scan.frames.frames.Frames.html#sofia_redux.scan.frames.frames.Frames",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "FlaggedData" -> "Frames" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "HorizontalFrames" [URL="../../../api/sofia_redux.scan.frames.horizontal_frames.HorizontalFrames.html#sofia_redux.scan.frames.horizontal_frames.HorizontalFrames",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "Frames" -> "HorizontalFrames" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaFrames" [URL="../../../api/sofia_redux.scan.custom.sofia.frames.frames.SofiaFrames.html#sofia_redux.scan.custom.sofia.frames.frames.SofiaFrames",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "HorizontalFrames" -> "SofiaFrames" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.frames.fifi_ls_frame_numba_functions Module

Functions

validate(valid, validated, weight, ...)

Utility function to validate HAWC+ frames following a data read.

get_relative_frame_weights(variance)

Calculate the relative frame weights from the input variance.

sofia_redux.scan.custom.fifi_ls.info.info Module

Functions

normalize_scan_coordinates(ra, dec, x, y, z, ...)

Convert (frame, pixel) indexed data to consistent flat arrays.

correct_for_gain(data, frame_valid, ...)

Use the calculated gains from the scan reduction to normalize data.

Classes

FifiLsInfo([configuration_path])

Initialize the FIFI-LS information.

Class Inheritance Diagram
digraph inheritance6f9f54edc9 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "CameraInfo" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled"]; "Info" -> "CameraInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsInfo" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.info.info.FifiLsInfo.html#sofia_redux.scan.custom.fifi_ls.info.info.FifiLsInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaInfo" -> "FifiLsInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "Info" [URL="../../../api/sofia_redux.scan.info.info.Info.html#sofia_redux.scan.info.info.Info",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "Info" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaInfo" [URL="../../../api/sofia_redux.scan.custom.sofia.info.info.SofiaInfo.html#sofia_redux.scan.custom.sofia.info.info.SofiaInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "WeatherInfo" -> "SofiaInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "CameraInfo" -> "SofiaInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "WeatherInfo" [URL="../../../api/sofia_redux.scan.info.weather_info.WeatherInfo.html#sofia_redux.scan.info.weather_info.WeatherInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="An abstract class used to retrieve information on environmental conditions"]; "Info" -> "WeatherInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.info.astrometry Module

Classes

FifiLsAstrometryInfo()

Initialize astrometry information for FIFI-LS observations.

Class Inheritance Diagram
digraph inheritancec136787a9e { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "AstrometryInfo" [URL="../../../api/sofia_redux.scan.info.astrometry.AstrometryInfo.html#sofia_redux.scan.info.astrometry.AstrometryInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "InfoBase" -> "AstrometryInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsAstrometryInfo" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.info.astrometry.FifiLsAstrometryInfo.html#sofia_redux.scan.custom.fifi_ls.info.astrometry.FifiLsAstrometryInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaAstrometryInfo" -> "FifiLsAstrometryInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "InfoBase" [URL="../../../api/sofia_redux.scan.info.base.InfoBase.html#sofia_redux.scan.info.base.InfoBase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "InfoBase" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaAstrometryInfo" [URL="../../../api/sofia_redux.scan.custom.sofia.info.astrometry.SofiaAstrometryInfo.html#sofia_redux.scan.custom.sofia.info.astrometry.SofiaAstrometryInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "AstrometryInfo" -> "SofiaAstrometryInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.info.detector_array Module

Classes

FifiLsDetectorArrayInfo()

Initialize the FIFI-LS detector array information.

Class Inheritance Diagram
digraph inheritanceab1f282e56 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FifiLsDetectorArrayInfo" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.info.detector_array.FifiLsDetectorArrayInfo.html#sofia_redux.scan.custom.fifi_ls.info.detector_array.FifiLsDetectorArrayInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaDetectorArrayInfo" -> "FifiLsDetectorArrayInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "InfoBase" [URL="../../../api/sofia_redux.scan.info.base.InfoBase.html#sofia_redux.scan.info.base.InfoBase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "InfoBase" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaDetectorArrayInfo" [URL="../../../api/sofia_redux.scan.custom.sofia.info.detector_array.SofiaDetectorArrayInfo.html#sofia_redux.scan.custom.sofia.info.detector_array.SofiaDetectorArrayInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "InfoBase" -> "SofiaDetectorArrayInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.info.instrument Module

Classes

FifiLsInstrumentInfo()

Initialize the FIFI-LS instrument information.

Class Inheritance Diagram
digraph inheritance52fed885f9 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "CameraInstrumentInfo" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled"]; "InstrumentInfo" -> "CameraInstrumentInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "FifiLsInstrumentInfo" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.info.instrument.FifiLsInstrumentInfo.html#sofia_redux.scan.custom.fifi_ls.info.instrument.FifiLsInstrumentInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaInstrumentInfo" -> "FifiLsInstrumentInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "InfoBase" [URL="../../../api/sofia_redux.scan.info.base.InfoBase.html#sofia_redux.scan.info.base.InfoBase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "InfoBase" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "InstrumentInfo" [URL="../../../api/sofia_redux.scan.info.instrument.InstrumentInfo.html#sofia_redux.scan.info.instrument.InstrumentInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "InfoBase" -> "InstrumentInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaInstrumentInfo" [URL="../../../api/sofia_redux.scan.custom.sofia.info.instrument.SofiaInstrumentInfo.html#sofia_redux.scan.custom.sofia.info.instrument.SofiaInstrumentInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "CameraInstrumentInfo" -> "SofiaInstrumentInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.info.telescope Module

Classes

FifiLsTelescopeInfo()

Initialize the FIFI-LS telescope information.

Class Inheritance Diagram
digraph inheritance892c4992c0 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FifiLsTelescopeInfo" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.info.telescope.FifiLsTelescopeInfo.html#sofia_redux.scan.custom.fifi_ls.info.telescope.FifiLsTelescopeInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaTelescopeInfo" -> "FifiLsTelescopeInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "InfoBase" [URL="../../../api/sofia_redux.scan.info.base.InfoBase.html#sofia_redux.scan.info.base.InfoBase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "InfoBase" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaTelescopeInfo" [URL="../../../api/sofia_redux.scan.custom.sofia.info.telescope.SofiaTelescopeInfo.html#sofia_redux.scan.custom.sofia.info.telescope.SofiaTelescopeInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "TelescopeInfo" -> "SofiaTelescopeInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "TelescopeInfo" [URL="../../../api/sofia_redux.scan.info.telescope.TelescopeInfo.html#sofia_redux.scan.info.telescope.TelescopeInfo",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "InfoBase" -> "TelescopeInfo" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.integration.integration Module

Classes

FifiLsIntegration([scan])

Initialize a FIFI-LS integration.

Class Inheritance Diagram
digraph inheritanceaecf46bda5 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FifiLsIntegration" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.integration.integration.FifiLsIntegration.html#sofia_redux.scan.custom.fifi_ls.integration.integration.FifiLsIntegration",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaIntegration" -> "FifiLsIntegration" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "Integration" [URL="../../../api/sofia_redux.scan.integration.integration.Integration.html#sofia_redux.scan.integration.integration.Integration",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "Integration" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaIntegration" [URL="../../../api/sofia_redux.scan.custom.sofia.integration.integration.SofiaIntegration.html#sofia_redux.scan.custom.sofia.integration.integration.SofiaIntegration",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "Integration" -> "SofiaIntegration" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.scan.custom.fifi_ls.integration.fifi_ls_integration_numba_functions Module

Functions

flag_zeroed_channels(frame_data, ...)

Flag channels with the DISCARD flag if all frame data are zero valued.

sofia_redux.scan.custom.fifi_ls.scan.scan Module

Classes

FifiLsScan(channels[, reduction])

Initialize a FIFI-LS scan.

Class Inheritance Diagram
digraph inheritanceb70b6c9d50 { bgcolor=transparent; rankdir=LR; size=""; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FifiLsScan" [URL="../../../api/sofia_redux.scan.custom.fifi_ls.scan.scan.FifiLsScan.html#sofia_redux.scan.custom.fifi_ls.scan.scan.FifiLsScan",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "SofiaScan" -> "FifiLsScan" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "Scan" [URL="../../../api/sofia_redux.scan.scan.scan.Scan.html#sofia_redux.scan.scan.scan.Scan",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "ABC" -> "Scan" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; "SofiaScan" [URL="../../../api/sofia_redux.scan.custom.sofia.scan.scan.SofiaScan.html#sofia_redux.scan.custom.sofia.scan.scan.SofiaScan",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,margin=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "Scan" -> "SofiaScan" [arrowsize=1.2,arrowtail=empty,dir=back,style="setlinewidth(0.5)"]; }

sofia_redux.visualization

sofia_redux.visualization.quicklook Module

Functions

make_image(filename[, extension, colormap, ...])

Generate a map image from a FITS file.

make_spectral_plot(axis, wavelength, ...[, ...])

Generate a plot of spectral data.

sofia_redux.pipeline

The Redux application programming interface (API), including the FIFI-LS interface classes, are documented in the sofia_redux.pipeline package.

Appendix A: Pipeline Recipe

This JSON document is the black-box interface specification for the FIFI-LS Redux pipeline, as defined in the Pipetools-Pipeline ICD.

{
    "inputmanifest" : "infiles.txt",
    "outputmanifest" : "outfiles.txt",
    "env" : {
        "DPS_PYTHON": "$DPS_SHARE/share/anaconda3/envs/fifi_ls/bin"
    },
    "knobs" : {
        "REDUX_CONFIG" : {
            "desc" : "Redux parameter file containing custom configuration.",
            "type" : "string",
            "default": "None"
        }
    },
    "command" : "$DPS_PYTHON/redux_pipe infiles.txt -c $DPS_REDUX_CONFIG"
}