Source code for sunpy.map.sources.suvi

"""SUVI Map subclass definitions"""
import astropy.units as u
from astropy.coordinates import CartesianRepresentation
from astropy.visualization import AsinhStretch
from astropy.visualization.mpl_normalize import ImageNormalize

from sunpy.map import GenericMap
from sunpy.map.sources.source_type import source_stretch

__author__ = "Jack Ireland"
__email__ = "jack.ireland@nasa.gov"


__all__ = ["SUVIMap"]


[docs] class SUVIMap(GenericMap): """ SUVI Image Map. The Solar Ultraviolet Imager (SUVI) is a normal-incidence Cassegrain EUV telescope on board the latest of the Geostationary Operational Environmental Satellite (GOES) missions (GOES-16, formerly known as GOES-R). It is similar to Atmospheric Imaging Assembly (AIA). It operates in geostationary orbit above the Americas at 75.2 degree W. It's primary purpose is to support NOAA's goal to characterize solar features and detect events that lead to space weather. It uses a filter wheel to image the Sun in six EUV wavelength corresponding to known coronal emission lines: - 9.4 nm (FeXVIII) - 13.1 nm (FeXXI) - 17.1 nm (FeIX/X) - 19.5 nm (FeXII) - 28.4 nm (FeXV) - 30.4 nm (HeII) The focal plane consists of a CCD detector with 1280 x 1280 pixels. The plate scale is 2.5 arcsec per pixel. The field of view is therefore almost twice the size of the Sun (53 arcmin) and extends out to 1.6 solar radii in the horizontal direction and 2.3 solar radii in the diagonal. It provides observations in each wavelength at multiple exposure times every 4 minutes. GOES-16 was launched on November 16, 2016, and became operational as NOAA's GOES East on December 18, 2017, replacing GOES-13. Notes ----- SUVI uses the same color tables as AIA for the matching wavelengths. SUVI 195 and 284 images use the AIA 193 & 335 color tables respectively. Observer location: We use the ECEF coordinates provided in the FITS header for the spacecraft location even when coordinates in other frames are provided due to accuracy concerns over the coordinate transformations used in the SUVI data pipeline. There could still be a small discrepancy because the definition of the ECEF frame used by SUVI may not exactly match the definition of the ITRS frame used by SunPy to interpret the header values. Note that some Level 1b files cannot be loaded due to errors in the header. References ---------- * `GOES-R Mission <https://www.goes-r.gov>`_ * `SUVI Instrument Page <https://www.goes-r.gov/spacesegment/suvi.html>`_ * `GOES-16 on Wikipedia <https://en.wikipedia.org/wiki/GOES-16>`_ * `Recommended instrument description article <https://doi.org/10.3847/2041-8213/aaa28e>`_ * `User's Guide <https://www.goes-r.gov/users/docs/PUG-L1b-vol3.pdf>`_ * `Level 1b Readme <https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/goes16/l1b/suvi-l1b-fe094/ReadMe.pdf>`_ * `Data archive <https://www.ngdc.noaa.gov/stp/satellite/goes-r.html>`_ * `Level 1b data <https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/goes16/l1b/>`_ * `Level 2 data <https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/goes16/l2/data/>`_ """ def __init__(self, data, header, **kwargs): super().__init__(data, header, **kwargs) self._nickname = self.detector self.plot_settings["cmap"] = self._get_cmap_name() self.plot_settings["norm"] = ImageNormalize( stretch=source_stretch(self.meta, AsinhStretch(0.01)), clip=False ) @property def _supported_observer_coordinates(self): return [(('obsgeo-x', 'obsgeo-y', 'obsgeo-z'), {'x': self.meta.get('obsgeo-x'), 'y': self.meta.get('obsgeo-y'), 'z': self.meta.get('obsgeo-z'), 'unit': u.m, 'representation_type': CartesianRepresentation, 'frame': "itrs"}) ] + super()._supported_observer_coordinates @property def observatory(self): return "GOES-R" @property def detector(self): return "SUVI"
[docs] @classmethod def is_datasource_for(cls, data, header, **kwargs): """Determines if header corresponds to an AIA image""" return str(header.get("instrume", "")).startswith( "GOES-R Series Solar Ultraviolet Imager" )