Source code for sunpy.map.sources.psp

"""
Parker Solar Probe subclass definitions.
"""

from astropy.visualization import AsinhStretch
from astropy.visualization.mpl_normalize import ImageNormalize

from sunpy.map import GenericMap

__all__ = ['WISPRMap']


[docs] class WISPRMap(GenericMap): """ WISPR Map The The Wide-field Imager for Parker Solar Probe (WISPR) is a white light telescope onboard the Parker Solar Probe (PSP) spacecraft. Notes ----- By default, plotting of this map will set the lower bound to zero (i.e., clip out negative values for pixels). You can change this bound by modifying ``.plot_settings['norm'].vmin``. References ---------- * `PSP science gateway <https://sppgway.jhuapl.edu//>`__ * `WISPR Instrument Page <https://wispr.nrl.navy.mil//>`__ * `Instrument Paper <https://doi.org/10.1007/s11214-014-0114-y>`__ """ def __init__(self, data, header, **kwargs): super().__init__(data, header, **kwargs) self.plot_settings['norm'] = ImageNormalize( stretch=AsinhStretch(a=0.001), vmin=0) @property def processing_level(self): lvl = self.meta.get('level', None) if lvl is None: return # Chop off the leading 'L' if present if lvl[0] == 'L': lvl = lvl[1:] try: lvl = int(lvl) except ValueError: # The int conversion will fail for L2b files, and we should fail # safe if the user chooses to customize this with other values. pass return lvl @property def name(self): return 'WISPR ' + super().name @property def detector(self): detector = self.meta.get('detector', "") if detector == 1: return "Inner" if detector == 2: return "Outer" # Official data products will only be 1 or 2, but we should fail safe # if users customize this value themselves. return detector
[docs] @classmethod def is_datasource_for(cls, data, header, **kwargs): """Determines if header corresponds to an WISPR image""" is_psp = 'parker solar probe' in str(header.get('obsrvtry', '')).lower() is_wispr = str(header.get('instrume', '')).startswith('WISPR') return is_psp and is_wispr