Source code for utils.specutils_cos.check_segments

"""
.. module:: check_segments
   :synopsis: Checks that the array of segment names in the COS FITS extension
       table are some combination of allowed values.

.. moduleauthor:: Scott W. Fleming <fleming@stsci.edu>
"""

#--------------------
# Built-In Imports
#--------------------
from __future__ import absolute_import
import os
import sys
from builtins import str
#--------------------
# External Imports
#--------------------
import numpy
#--------------------
# Package Imports
#--------------------
from spec_plots.utils.specutils.specutilserror import SpecUtilsError
from spec_plots import __version__
#--------------------

#--------------------
[docs] def check_segments(segments_list, input_file): """ Checks that the array of "segments" in the COS spectrum header are expected values. It returns a scalar string representing the band (either "FUV" or "NUV"). If the array is not what's expected, an Exception is raised. :param segments_list: List of segment labels. :type segments_list: list :param input_file: Name of input FITS file. :type input_file: str :returns: str -- A string representation of the band, either "FUV" or "NUV". :raises: utils.specutils.SpecUtilsError .. note:: This function does not attempt to access the input file, it only requires the name of the file for error reporting purposes. """ # Get number of segments. n_segments = len(segments_list) # Segment array must contain either one, two, or three elements. if n_segments == 1: # This can happen with FUV data for some reason, so it can be either # "FUVA" or "FUVB". if (numpy.array_equal(segments_list, ["FUVA"]) or numpy.array_equal(segments_list, ["FUVB"])): this_band = "FUV" else: raise SpecUtilsError("The array of SEGMENT strings contains one" " value, but is not equal to [\"FUVA\"] or" " [\"FUVB\"] in file " + input_file) elif n_segments == 2: # Must be ["FUVA", "FUVB"]. if numpy.array_equal(segments_list, ["FUVA", "FUVB"]): this_band = "FUV" else: raise SpecUtilsError("The array of SEGMENT strings contains two" " values, but is not equal to [\"FUVA\", " "\"FUVB\"] in file " + input_file) elif n_segments == 3: # Must be ["NUVA", "NUVB", "NUVC"]. if numpy.array_equal(segments_list, ["NUVA", "NUVB", "NUVC"]): this_band = "NUV" else: raise SpecUtilsError("The array of SEGMENT strings contains three" " values, but is not equal to [\"NUVA\"," " \"NUVB\", \"NUVC\"] in file " + input_file) else: raise SpecUtilsError("The array of SEGMENT strings should contain 1," " 2, or 3 values, found " + str(n_segments) + " in file " + input_file) return this_band
#--------------------