- Sample data now downloads automatically on import if not available and is now pluggable so can be used by affiliated packages. Shortcut names have been normalized and all LIGHTCURVE shortcuts have changed to TIMESERIES.
- Calculation of points on an arc of a great circle connecting two points on the Sun.
- Maps from Helioviewer JPEG2000 files now have correct image scaling.
- Removed
extract_time
function fromsunpy.time
and also tests related to the function fromsunpy.time.tests
- User can now pass a custom time format as an argument inside
sunpy.database.add_from_dir()
in case thedate-obs
metadata cannot be read automatically from the files. - Get and set methods for composite maps now use Map plot_settings.
- Simplified map names when plotting.
- Add time format used by some SDO HMI FITS keywords
- Fix bug in
wcs.convert_data_to_pixel
where crpix[1] was used for both axes. - Fix some leftover instances of
GenericMap.units
- Fixed bugs in
sun
equations - Now the
sunpy.database.tables.display_entries()
prints an astropy table. - Additional methods added inside the
sunpy.database
class to make it easier to display the database contents. sunpy.io.fits.read
will now return any parse-able HDUs even if some raise an error.VSOClient
no longer prints a lot of XML junk if the query fails.- Remove unused
sunpy.visualization.plotting
module - Port the pyana wrapper to Python 3
Map.peek(basic_plot=True)
no longer issues warnings- Remove the
sunpy.map.nddata_compat
module, this makesMap.data
andMap.meta
read only. - Add a
NorthOffsetFrame
class for generating HGS-like coordinate systems with a shifted north pole. - Remove deprecated
VSOClient.show
method. - Deprecate
sunpy.wcs
:sunpy.coordinates
andsunpy.map
now provide all that functionality in a more robust manner. - Added hdu index in
sunpy.database.tables.DatabaseEntry
as a column in the table. - Removed
HelioviewerClient
from thesunpy.net
namespace. It should now be imported withfrom sunpy.net.helioviewer import HelioviewerClient
. - Removed compatibility with standalone
wcsaxes
and instead depend on the version in astropy 1.3. SunPy now therefore depends on astropy>=1.3. - Update to
TimeRange.__repr__
; now includes the qualified name andid
of the object. - A new
sunpy.visualization.imageanimator.LineAnimator
class has been added to animate 1D data. This has resulted in API change for thesunpy.visualization.imageanimator.ImageAnimator
class. The updateimage method has been renamed to update_plot. - Change the default representation for the Heliographic Carrington frame so Longitude follows the convention of going from 0-360 degrees.
- Fix Map parsing of some header values to allow valid float strings like 'nan' and 'inf'.
- Drop support for Python 3.4.
- SunPy now requires WCSAxes and Map.draw_grid only works with WCSAxes.
Helioprojective
andHelioCentric
frames now have anobserver
attribute which itself is a coordinate object (SkyCoord
) instead ofB0
,L0
andD0
to describe the position of the observer.GenericMap.draw_grid
now usesWCSAxes
, it will only work on aWCSAxes
plot, this may be less performant than the previous implementation.GenericMap.world_to_pixel
andGenericMap.pixel_to_world
now accept and returnSkyCoord
objects only.GenericMap
has a new propertyobserver_coordinate
which returns aSkyCoord
describing the position of the observer.GenericMap.submap
now takes arguments of the formbottom_left
andtop_right
rather thanrange_a
andrange_b
. This change enables submap to properly handle rotated maps and take input in the form ofSkyCoord
objects.- When referring to physical coordinates
Pair.x
has been replaced withSpatialPair.axis1
. This means values returned byGenericMap
now differentiate between physical and pixel coordinates. - Fix Map parsing of some header values to allow valid float strings like 'nan' and 'inf'.
- The physical radius of the Sun (length units) is now passed from Map into the
coordinate frame so a consistent value is used when calculating distance to
the solar surface in the
HelioprojectiveFrame
coordinate frame. - A new
sunpy.visualization.imageanimator.ImageAnimatorWCS
class has been added to animate N-Dimensional data with the associated WCS object. - Moved Docs to docs/ to follow the astropy style
- Added SunPy specific warnings under util.
- Fixed test failures with numpy developer version.[#1808]
- Added
timeout
parameter insunpy.data.download_sample_data()
- Fixed
aiaprep
to return properly sized map. - Deprecation warnings fixed when using image coalignment.
- Sunpy is now Python 3.x compatible (3.4 and 3.5).
- Added a unit check and warnings for map metadata.
- Added IRIS SJI color maps.
- Updated
show_colormaps()
with new string filter to show a subset of color maps. - Fixed MapCube animations by working around a bug in Astropy's ImageNormalize
- Remove
vso.QueryResponse.num_records()
in favour oflen(qr)
- Add a
draw_rectangle
helper toGenericMap
which can plot rectangles in the native coordinate system of the map. - Added the ability to shift maps to correct for incorrect map location, for example.
- Bug fix for RHESSI summary light curve values.
- Mapcube solar derotation and coalignment now pass keywords to the routine used to shift the images, scipy.ndimage.interpolation.shift.
- Add automatic registration of
GenericMap
subclasses with the factory as long as they define anis_datasource_for
method. - Added functions
flareclass_to_flux
andflux_to_flareclass
which convert between GOES flux to GOES class numbers (e.g. X12, M3.4). - Removed old
sunpy.util.goes_flare_class()
- Bug fix for RHESSI summary light curve values.
- The
MapCube.as_array
function now returns a masked numpy array if at least one of the input maps in the MapCube has a mask. - Map superpixel method now respects maps that have masks.
- Map superpixel method now accepts numpy functions as an argument, or any user-defined function.
- Map superpixel method no longer has the restriction that the number of original pixels in the x (or y) side of the superpixel exactly divides the number of original pixels in the x (or y) side of the original map data.
sunpy.physics.transforms
has been deprecated and the code moved intosunpy.physics
.- Add the
sunpy.coordinates
module, this adds the core physical solar coordinates frame within the astropy coordinates framework. - Added ability of maps to draw contours on top of themselves (
draw_contours
) - Added concatenate functionality to lightcurve base class.
- Fix Map to allow astropy.io.fits Header objects as valid input for meta arguments.
- Added an examples gallery using
sphinx-gallery
. - API clean up to constants. Removed constant() function which is now replaced by get().
- Prevent helioviewer tests from checking access to the API endpoint when running tests offline.
GenericMap.units
is renamed toGenericMap.spatial_units
to avoid confusion withNDData.unit
.GenericMap
now has acoordinate_frame
property which returns anastropy.coordinates
frame with all the meta data from the map populated.GenericMap
now has a_mpl_axes
method which allows it to be specified as a projection tomatplotlib
methods and will return aWCSAxes
object withWCS
projection.
- Enforced the use of Astropy Quantities through out most of SunPy.
- Dropped Support for Python 2.6.
- Remove old style string formatting and other 2.6 compatibility lines.
- Added vso like querying feature to JSOC Client.
- Refactor the JSOC client so that it follows the .query() .get() interface of VSOClient and UnifedDownloader.
- Provide
__str__
and__repr__
methods on vsoQueryResponse
deprecate.show()
. - Downloaded files now keep file extensions rather than replacing all periods with underscores.
- Update to TimeRange API, removed t1 and t0, start and end are now read-only attributes.
- Added ability to download level3 data for lyra Light Curve along with corresponding tests.
- Added support for gzipped FITS files.
- Add STEREO HI Map subclass and color maps.
- Map.rotate() no longer crops any image data.
- For accuracy, default Map.rotate() transformation is set to bi-quartic.
sunpy.image.transform.affine_transform
now casts integer data to float64 and sets NaN values to 0 for all transformations except scikit-image rotation with order <= 3.- CD matrix now updated, if present, when Map pixel size is changed.
- Removed now-redundant method for rotating IRIS maps since the functionality exists in Map.rotate()
- Provide
__str__
and__repr__
methods on vsoQueryResponse
deprecate.show()
- SunPy colormaps are now registered with matplotlib on import of
sunpy.cm
sunpy.cm.get_cmap
no longer defaults to 'sdoaia94'- Added database url config setting to be setup by default as a sqlite database in the sunpy working directory
- Added a few tests for the sunpy.roi module
- Added capability for figure-based tests
- Removed now-redundant method for rotating IRIS maps since the functionality exists in Map.rotate().
- SunPy colormaps are now registered with matplotlib on import of
sunpy.cm
. sunpy.cm.get_cmap
no longer defaults to 'sdoaia94'.- Added database url config setting to be setup by default as a sqlite database in the sunpy working directory.
- Added a few tests for the sunpy.roi module.
- Refactored mapcube co-alignment functionality.
- Removed sample data from distribution and added ability to download sample files
- Changed start of GOES 2 operational time range back to 1980-01-04 so data from 1980 can be read into GOESLightCurve object
- Require JSOC request data calls have an email address attached.
- Calculation of the solar rotation of a point on the Sun as seen from Earth, and its application to the de-rotation of mapcubes.
- Downloaded files now keep file extensions rather than replacing all periods with underscores
- Fixed the downloading of files with duplicate names in sunpy.database
- Removed sample data from distribution and added ability to download sample files.
- Added the calculation of the solar rotation of a point on the Sun as seen from Earth, and its application to the de-rotation of mapcubes.
- Changed default for GOESLightCurve.create() so that it gets the data from the most recent existing GOES fits file.
- Map plot functionality now uses the mask property if it is present, allowing the plotting of masked map data
- Map Expects Quantities and returns quantities for most parameters.
- Map now used Astropy.wcs for world <-> pixel conversions.
- map.world_to_pixel now has a similar API to map.pixel_to_world.
- map.shape has been replaced with map.dimensions, which is ordered x first.
- map.rsun_arcseconds is now map.rsun_obs as it returns a quantity.
- Map properties are now named tuples rather than dictionaries.
- Improvement for Map plots, standardization and improved color tables, better access to plot variables through new plot_settings variable.
- Huge improvements in Instrument Map doc strings. Now contain instrument descriptions as well as reference links for more info.
- net.jsoc can query data series with time sampling by a Sample attribute implemented in vso.
- MapCube.plot and MapCube.peek now support a user defined plot_function argument for customising the animation.
- Added new sample data file, an AIA cutout file.
- Moved documentation build directory to doc/build
- Added additional functionality to the GOES module i.e. the ability to calculate GOES temperature and emission measure from GOES fluxes.
- changed _maps attribute in MapCube to a non-hidden type
- Added Nobeyama Radioheliograph data support to Lightcurve object.
- Fixed some tests on map method to support Windows
- Added a window/split method to time range
- Updates to spectrogram documentation
- Added method Database.add_from_hek_query_result to HEK database
- Added method Database.download_from_vso_query_result
- GOES Lightcurve now makes use of a new source of GOES data, provides metadata, and data back to 1981.
- Removed sqlalchemy as a requirement for SunPy
- Added support for NOAA solar cycle prediction in lightcurves
- Some basic tests for GenericLightCurve on types of expected input.
- Fix algorithm in sunpy.sun.equation_of_center
- Added Docstrings to LightCurve methods.
- Added tests for classes in sunpy.map.sources. Note that some classes (TRACE, RHESSI) were left out because SunPy is not able to read their FITS files.
- Added functions that implement image coalignment with support for MapCubes.
- Cleaned up the sunpy namespace, removed .units, /ssw and .sphinx. Also moved .coords .physics.transforms.
- Added contains functionality to TimeRange module
- Added t='now' to parse_time to privide utcnow datetime.
- Fixed time dependant functions (.sun) to default to t='now'
- Fixed solar_semidiameter_angular_size
- Improved line quality and performances issues with map.draw_grid()
- Remove deprecated make_map command.
Bug Fixes: * Fix map.rotate() functionality * Change of source for GOES data. * Fix EIT test data and sunpy FITS saving * Some documentation fixes * fix file paths to use os.path.join for platform independance.
Features:
- Major documentation refactor. A far reaching re-write and restructure.
- Add a SunPy Database to store and search local data.
- Add beta support for querying the HELIO HEC
- Add beta HEK to VSO query translation.
- Add the ability to download the GOES event list.
- Add support for downloading and querying the LYTAF database.
- Add support for ANA data.
- Updated sun.constants to use astropy.constants objects which include units, source, and error instide. For more info check out http://docs.astropy.org/en/latest/constants/index.html
- Add some beta support for IRIS data products
- Add a new MapCubeAnimator class with interactive widgets which is returned by mapcube.peek().
- The Glymur library is now used to read JPEG2000 files.
- GOESLightCurve now supports all satellites.
Bug Fixes:
- Add support for VSO queries through proxies.
- Fix apparent Right Ascension calulations.
- LightCurve meta data member now an OrderedDict Instance
Bug Fixes:
- Pass draw_limb arguments to patches.Circle
- Pass graw_grid arguments to pyplot.plot()
- Fix README code example
- Fix Documentation links in potting guide
- Update to new EVE data URL
- Update LogicalLightcurve example in docs
- Improved InteractiveVSOClient documentation
- GOESLightCurve now fails politely if no data is avalible.
Known Bugs:
- sunpy.util.unit_conversion.to_angstrom does not work if 'nm' is passed in.
- Bug Fix: Fix a regression in CompositeMap that made contor plots fail.
- Bug Fix: Allow Map() to accept dict as metadata.
- Bug Fix: Pass arguments from Map() to io.read_file.
Major Changes:
- Removal of Optional PIL dependancy
- Parse_time now looks through nested lists/tuples
- Draw_limb and draw_grid are now implemented on MapCube and CompositeMap
- Caculations for differential roation added
- mapcube.plot() now runs a mpl animation with optional controls
- A basic Region of Interest framework now exists under sunpy.roi
- STEREO COR colour maps have been ported from solarsoft.
- sunpy.time.timerange has a split() method that divides up a time range into n equal parts.
- Added download progress bar
- pyfits is depricated in favor of Astropy
spectra:
- Plotting has been refactorted to use a consistent interface
- spectra now no-longer inherits from numpy.ndarray instead has a .data attribute.
Map:
- map now no-longer inherits from numpy.ndarray instead has a .data attribute.
- make_map is deprecated in favor of Map which is a new factory class
- sunpy.map.Map is now sunpy.map.GenericMap
- mymap.header is now mymap.meta
- attributes of the map class are now read only, changes have to be made through map.meta
- new MapMeta class to replace MapHeader, MapMeta is not returned by sunpy.io
- The groundwork for GenericMap inherting from astropy.NDData has been done, there is now a NDDataStandin class to provide basic functionality.
io:
- top level file_tools improved to be more flexible and support multiple HDUs
- all functions in sunpy.io now assume mutliple HDUs, even JP2 ones.
- there is now a way to override the automatic filetype detection
- Automatic fits file detection improved
- extract_waveunit added to io.fits for detection of common ways of storing wavelength unit in fits files.
Bug fixes or under the hood changes:
- A major re-work of all interal imports has resulted in a much cleaner namespace, i.e. sunpy.util.util is no longer used to import util.
- Some SOHO and STEREO files were not reading properly due to a date_obs parameter.
- Sunpy will now read JP2 files without a comment parameter.
- Memory leak in Crotate patched
- Callisto: Max gap between files removed
Below are the main features that have been added for this release:
- Completely re-written plotting routines for most of the core datatypes.
- JPEG 2000 support as an input file type.
- Improved documentation for much of the code base, including re-written installation instructions.
- New lightcurve object
- LYRA support
- GOES/XRS support
- SDO/EVE support
- New Spectrum and Spectrogram object (in development)
- Spectrogram plotting routines
- Callisto spectrum type and support
- STEREO/SWAVES support
- Map Object
- Added support for LASCO, Yohkoh/XRT maps
- A new CompositeMap object for overlaying maps
- Resample method
- Superpixel method
- The addition of the rotate() method for 2D maps.