Maps (sunpy.map
)#
Overview#
One of core classes in sunpy is a Map. A sunpy Map object is simply a spatially-aware data array, often an image. In order to make it easy to work with image data in sunpy, the Map object provides a number of methods for commonly performed operations.
2D map objects are subclasses of GenericMap
and these objects are
created using the Map factory Map
.
A number of instrument are supported by subclassing this base object. See Instrument Map Classes to see a list of all of them. More complex subclasses are also available. See sunpy.map Package.
Creating Map Objects#
sunpy Map objects are constructed using the special factory
class Map
:
>>> x = sunpy.map.Map('file.fits')
The result of a call to Map
will be either a GenericMap
object,
or a subclass of GenericMap
which either deals with a specific type of data,
e.g. AIAMap
or LASCOMap
(see sunpy.map Package to see a list of all of them), or if no
instrument matches, a 2D map GenericMap
.
Fixing map metadata#
If you need to fix the metadata of a fits file before it is handed to Map
, this can be done as
follows:
>>> data, header = astropy.io.fits.read(filepath)[0]
>>> header['cunit1'] = 'arcsec'
>>> header['cunit2'] = 'arcsec'
>>> map = sunpy.map.Map(data, header)
- class sunpy.map.map_factory.MapFactory(default_widget_type=None, additional_validation_functions=[], registry=None)[source]#
A factory for generating coordinate aware 2D images.
This factory takes a variety of inputs, such as file paths, wildcard patterns or (data, header) pairs.
Depending on the input different return types are possible.
- Parameters:
*inputs – Inputs to parse for map objects. See the examples section for a detailed list of accepted inputs.
sequence (
bool
, optional) – Return asunpy.map.MapSequence
object comprised of all the parsed maps.composite (
bool
, optional) – Return asunpy.map.CompositeMap
object comprised of all the parsed maps.
- Returns:
sunpy.map.GenericMap
– If the input results in a singular map object, then that is returned.list
ofGenericMap
– If multiple inputs are given andsequence=False
andcomposite=False
(the default) then a list ofGenericMap
objects will be returned.sunpy.map.MapSequence
– If the input corresponds to multiple maps andsequence=True
is set, then aMapSequence
object is returned.sunpy.map.CompositeMap
– If the input corresponds to multiple maps andcomposite=True
is set, then aCompositeMap
object is returned.
Examples
>>> import sunpy.map >>> from astropy.io import fits >>> import sunpy.data.sample >>> mymap = sunpy.map.Map(sunpy.data.sample.AIA_171_IMAGE)
sunpy.map Package#
All sunpy Maps are derived from sunpy.map.GenericMap
, all the methods and attributes are documented in that class.
sunpy.map Package#
Functions#
|
Returns the coordinates of the center of every pixel in a map. |
Returns the coordinates of the pixel corners in a map. |
|
Returns pixel pair indices of every pixel in a map. |
|
|
Checks whether a coordinate falls within the bounds of a map. |
|
Checks if a map contains the full disk of the Sun. |
|
Checks if a map contains any part of the solar limb or equivalently whether the map contains both on-disk and off-disk pixels. |
|
Returns |
|
Checks if the helioprojective Cartesian coordinates are on the solar disk. |
|
Deprecated since version 5.0. |
|
Checks if none of the coordinates in the |
|
Checks if all of the coordinates in the |
|
Returns the pixel locations of the edges of an input map. |
Returns the the bottom left and top right coordinates of the smallest rectangular region that contains all the on disk coordinates of the input map. |
|
|
Return the pixel coordinates for every pixel that intersects with a coordinate path. |
|
Samples the data in a map at given series of coordinates. |
|
Calculates the solar angular radius as seen by the observer. |
Classes#
|
A Composite Map class |
|
A Generic spatially-aware 2D data array |
|
A series of Maps in a single object. |
|
Variables#
A factory for generating coordinate aware 2D images. |
|
CGS unit for magnetic flux |
Class Inheritance Diagram#
Header helpers#
The header_helper sub-module contains helper functions for generating FITS-WCS headers from Python objects.
sunpy.map.header_helper Module#
Functions#
Deprecated since version 5.0. |
|
|
Function to create a FITS-WCS header from a coordinate object ( |
|
Function to get observer meta from coordinate frame. |
|
Construct a FITS-WCS header for a full-Sun heliographic (Carrington or Stonyhurst) coordinate frame. |
Instrument Map Classes#
Defined in sunpy.map.sources
are a set of GenericMap
subclasses
which convert the specific metadata and other differences in each instruments
data to the standard GenericMap
interface.
These ‘sources’ also define things like the colormap and default
normalisation for each instrument.
These subclasses also provide a method, which describes to the Map
factory
which data and metadata pairs match its instrument.
sunpy.map.sources Package#
Functions#
|
Test determining if the given metadata contains Helioviewer Project sourced data. |
|
Assign the correct source-dependent image stretching function. |
Classes#
|
AIA Image Map. |
|
STEREO-SECCHI CORonograph Image Map. |
|
SOHO EIT Image Map. |
|
EUI Image Map |
|
STEREO-SECCHI EUVI Image Map |
|
STEREO-SECCHI Heliospheric Imager (HI) Map. |
|
HMI Image Map. |
|
SDO/HMI Synoptic Map. |
|
K-Cor Image Map. |
|
SOHO LASCO Image Map |
|
SOHO MDI Image Map |
|
SOHO MDI synoptic magnetogram Map. |
|
RHESSI Image Map. |
|
A 2D IRIS Slit Jaw Imager Map. |
|
Hinode SOT Image Map definition. |
|
SUVI Image Map. |
|
PROBA2 SWAP Image Map. |
|
Yohkoh SXT Image Map |
|
TRACE Image Map |
|
WISPR Map |
|
Hinode XRT map definition. |
Class Inheritance Diagram#
Writing a new Instrument Map Class#
Any subclass of GenericMap
which defines a method named
is_datasource_for
will automatically be registered with
the Map
factory. The is_datasource_for
method describes the form of the
data and metadata for which the GenericMap
subclass is valid. For
example it might check the value of the INSTRUMENT
key in the metadata
dictionary.
This makes it straightforward to define your own
GenericMap
subclass for a new instrument or a custom data source
like simulated data. These classes only have to be imported for this to work, as
demonstrated by the following example.
import sunpy.map
class FutureMap(sunpy.map.GenericMap):
def __init__(self, data, header, **kwargs):
super(FutureMap, self).__init__(data, header, **kwargs)
# Any Future Instrument specific keyword manipulation
# Specify a classmethod that determines if the data-header pair matches
# the new instrument
@classmethod
def is_datasource_for(cls, data, header, **kwargs):
"""Determines if header corresponds to an AIA image"""
return str(header.get('instrume', '')).startswith('FUTURESCOPE')
This class will now be available through the Map
factory as long as this
class has been defined, i.e. imported into the current session.
If you do not want to create a method named is_datasource_for
you can
manually register your class and matching method using the following method
import sunpy.map
sunpy.map.Map.register(FutureMap, FutureMap.some_matching_method)