sunpy.physics.differential_rotation.differential_rotate(smap, observer=None, time=None, **diff_rot_kwargs)[source]#

Warp a GenericMap to take into account both solar differential rotation and the changing location of the observer.


This function, while greatly improved in 1.0, is still experimental. Please validate that it gives you results you expect and report any discrepancies on the SunPy issue tracker.

The function transforms the input map data pixels by first rotating each pixel according to solar differential rotation. The amount of solar differential applied is calculated by the time difference between the observation time of map and the new observation time, as specified by either the “time” keyword or the “obstime” property of the “observer” keyword. The location of the rotated pixels are then transformed to locations on the Sun as seen from the new observer position. This is desirable since in most cases the observer does not remain at a fixed position in space. If the “time” keyword is used then the new observer position is assumed to be based on the location of the Earth. If the “observer” keyword is used then this defines the new observer position.

The function works with full disk maps and maps that contain portions of the solar disk (maps that are entirely off-disk will raise an error). When the input map contains the full disk, the output map has the same dimensions as the input map. When the input map images only part of the solar disk, only the on-disk pixels are differentially rotated and the output map can have a different dimensions compared to the input map. In this case any off-disk emission shown in the input map is not included in the output map.

  • smap (GenericMap) – Original map that we want to transform.

  • observer (BaseCoordinateFrame, SkyCoord, None, optional) – The location of the new observer. Instruments in Earth orbit can be approximated by using the position of the Earth at the observation time of the new observer.

  • time (sunpy-compatible time, TimeDelta, Quantity, None, optional) – Used to define the duration over which the amount of solar rotation is calculated. If ‘time’ is an Time then the time interval is difference between ‘time’ and the map observation time. If ‘time’ is TimeDelta or Quantity then the calculation is “initial_obstime + time”.


GenericMap – A map with the result of applying solar differential rotation to the input map.


The translational motion of the Sun over the time interval will be ignored. See transform_with_sun_center().