Skip to content

Releases: sunpy/sunpy

v5.1.2

04 Apr 14:41
v5.1.2
c8c0df0
Compare
Choose a tag to compare

Bug Fixes

  • Fixed the appearance of a double "Notes" heading in ~sunpy.map.Map subclasses. (#7376)
  • Fix a bug which caused Fido.search to crash due to SSL certificate verification error for the ~sunpy.net.helio.HECClient now returns no results and logs a warning in this case. (#7446)
  • The creation of the series string for a JSOC query was not adding the correct escape characters for comparison values for keywords. This was causing the JSOC to error. (#7467)
  • JPEG2000 files are now saved with the correct orientation. Previously they would be vertically flipped when saved. (#7486)
  • Fixed a very minor inaccuracy in three sunpy.map utility functions (~sunpy.map.contains_full_disk, ~sunpy.map.coordinate_is_on_solar_disk, and ~sunpy.map.is_all_off_disk) resulting from the accidental use of the small-angle approximation. (#7512)
  • The ~sunpy.map.GenericMap.rotate function now correctly updates the NAXISi. (#7522)
  • Fixed an inaccuracy in the implementation of ~sunpy.coordinates.HeliocentricEarthEcliptic and ~sunpy.coordinates.GeocentricSolarEcliptic such that the Earth was not exactly in the XY plane, but rather had an error of up ~10 meters. (#7530)
  • Fixed a bug with any coordinate transformation starting in ~sunpy.coordinates.GeocentricEarthEquatorial (GEI) returning output with AU as the length unit, rather than preserving the length unit of the initial coordinate. (#7545)

Documentation

  • Created a how to guide on fixing metadata that is either missing or incorrect before passing the header into the ~sunpy.map.Map class. (#7262)

Internal Changes

  • pyerfa is now a new direct dependency. It has been an indirect dependency from sunpy 3.1, over two years ago. (#7397)

v5.0.4

04 Apr 14:41
v5.0.4
8153c0c
Compare
Choose a tag to compare

Bug Fixes

  • Fix a bug which caused Fido.search to crash due to SSL certificate verification error for the ~sunpy.net.helio.HECClient now returns no results and logs a warning in this case. (#7446)
  • The creation of the series string for a JSOC query was not adding the correct escape characters for comparison values for keywords. This was causing the JSOC to error. (#7467)
  • Fixed a very minor inaccuracy in three sunpy.map utility functions (~sunpy.map.contains_full_disk, ~sunpy.map.coordinate_is_on_solar_disk, and ~sunpy.map.is_all_off_disk) resulting from the accidental use of the small-angle approximation. (#7512)
  • The ~sunpy.map.GenericMap.rotate function now correctly updates the NAXISi. (#7522)
  • Fixed an inaccuracy in the implementation of ~sunpy.coordinates.HeliocentricEarthEcliptic and ~sunpy.coordinates.GeocentricSolarEcliptic such that the Earth was not exactly in the XY plane, but rather had an error of up ~10 meters. (#7530)
  • Fixed a bug with any coordinate transformation starting in ~sunpy.coordinates.GeocentricEarthEquatorial (GEI) returning output with AU as the length unit, rather than preserving the length unit of the initial coordinate. (#7545)

Documentation

  • Created a how to guide on fixing metadata that is either missing or incorrect before passing the header into the ~sunpy.map.Map class. (#7262)

Internal Changes

  • pyerfa is now a new direct dependency. It has been an indirect dependency from sunpy 3.1, over two years ago. (#7397)

5.1.1

15 Jan 18:12
Compare
Choose a tag to compare

What's Changed

Full Changelog: v5.1.0...v5.1.1

5.0.3

15 Jan 18:11
Compare
Choose a tag to compare

What's Changed

Full Changelog: v5.0.2...v5.0.3

sunpy 5.1.0

22 Nov 15:58
Compare
Choose a tag to compare

5.1.0 (2023-11-20)

New Features

  • Added the ability to skip over errors raised for invalid fits files when passing a list of files to map using the existing keyword argument silence_errors. (#7018)
  • Added a sunpy.coordinates.Helioprojective.is_visible method to return whether the coordinate is visible (i.e., not obscured from the observer assuming that the Sun is an opaque sphere). (#7118)
  • Added a keyword option (quiet) for ~sunpy.coordinates.get_body_heliographic_stonyhurst to silence the normal reporting of the light-travel-time correction when observer is specified. (#7142)
  • Added the function sunpy.coordinates.sun.eclipse_amount to calculate the solar-eclipse amount for an observer. (#7142)
  • Add a keyword (map_center_longitude) to ~sunpy.map.header_helper.make_heliographic_header for centering the heliographic map at a longitude other than zero longitude. (#7143)
  • The minimum required version of Glymur (an optional dependency for reading JPEG2000 files) has been increase to 0.9.1. (#7164)
  • Added new default colormap scalings for WISPR Maps. Plots are now clipped at zero, and ~astropy.visualization.AsinhStretch is used for the scaling to ensure coronal details are visible despite the much-brighter stars. Parsing of the detector and level fields of the FITS headers is also improved. (#7180)
  • When creating a coordinate or coordinate frame without specifying obstime, the obstime value from the observer frame attribute will be used if present. (#7186)
  • Added a GONG synoptic map class which fixes non-compliant FITS metadata (#7220)
  • Added the module sunpy.coordinates.spice to enable the use of the ~astropy.coordinates.SkyCoord API to perform computations using SPICE kernels. (#7237)
  • Added three coordinate frames that depend on the orientation of Earth's magnetic dipole: ~sunpy.coordinates.Geomagnetic (MAG), ~sunpy.coordinates.SolarMagnetic (SM), and ~sunpy.coordinates.GeocentricSolarMagnetospheric (GSM). (#7239)

Bug Fixes

  • Fix RHESSI (~sunpy.net.dataretriever.RHESSIClient) fallback server detection. (#7092)
  • Fix bug in ~sunpy.coordinates.get_horizons_coord when specifying a time range via a dictionary that could cause the returned times to be slightly different from the supplied times. (#7106)
  • Updated the url of the ~sunpy.net.dataretriever.GBMClient to match on files other than those that end with version 0 (i.e., V0.pha). (#7148)
  • When directly instantiating a ~astropy.wcs.WCS from a FITS header that contains both Stonyhurst and Carrington heliographic coordinates for the observer location, the Stonyhurst coordinates will now be prioritized. This behavior is now consistent with the ~sunpy.map.Map class, which has always prioritized Stonyhurst coordinates over Carrington coordinates. (#7188)
  • Fixed a bug with ~sunpy.map.sample_at_coords() where sampling outside the bounds of the map would sometimes not error and instead return strange pixel values. (#7206)
  • Improved code when loading CDF files to improve performance and avoid raising of pandas performance warnings. (#7247)
  • Fixed a bug with sunpy.map.GenericMap.plot where setting norm to None would result in an error. (#7261)

Documentation

  • Removed the specification of a non-identity rotation matrix in two reprojection examples. (#7114)
  • Added an example (sphx_glr_generated_gallery_showcase_stereoscopic_3d.py) for how to make an anaglyph 3D (i.e., red-cyan) image from a stereoscopic observation. (#7123)
  • Added an example (sphx_glr_generated_gallery_showcase_eclipse_amount.py) to show how to obtain information about a solar eclipse using sunpy.coordinates.sun.eclipse_amount. (#7142)
  • Changed the sphx_glr_generated_gallery_map_masking_hmi.py to reproject AIA to HMI instead of the other way around. This is to avoid interpolating the HMI LOS magnetic field data. (#7160)
  • Fixed the timeseries peak finding example. Previously there was a bug when plotting the data with pandas. (#7199)
  • Added an example (sphx_glr_generated_gallery_units_and_coordinates_spice.py) for how to perform SPICE computations using the ~astropy.coordinates.SkyCoord API. (#7237)

Deprecations

  • Deprecated silence_errors in Map and Timeseries. This has been replaced with allow_errors keyword. (#7021)
  • The sunpy.coordinates.transformations module is now slated for removal from the public API as it consists of internal functions used by coordinate transformations. The context managers sunpy.coordinates.transform_with_sun_center and sunpy.coordinates.propagate_with_solar_surface should be accessed under sunpy.coordinates. (#7113)

Removals

  • sunpy.map.extract_along_coord() has been removed. Instead, use ~sunpy.map.pixelate_coord_path, and then pass its output to ~sunpy.map.sample_at_coords. pixelate_coord_path uses a different line algorithm by default, but you can specify bresenham=True as an argument to use the same line algorithm as extract_along_coord. (#7200)
  • sunpy.visualisation.limb.draw_limb() has been removed. Use sunpy.visualization.drawing.limb instead. (#7202)
  • Removed GenericTimeSeries.index. Use GenericTimeseries.time instead as a direct replacement. (#7203)
  • Removed the deprecated sunpy.io.cdf submodule, which is not intended to be user facing. (#7240)
  • Removed the deprecated sunpy.io.jp2, which is not intended to be user facing. (#7241)
  • Removed the deprecated sunpy.io.file_tools, which is not intended to be user facing. (#7242)
  • The deprecated sunpy.data.download_sample_data() has been removed Use sunpy.data.sample.download_all instead. (#7250)

Internal Changes

  • Removed the Binder configuration and link in README. This is because the configuration was untested, and does not currently work. (#7062)
  • Add a Dependabot config file to auto-update GitHub action versions. (#7068)
  • Add tests to check whether various ~sunpy.map.Map methods preserve laziness when operating on Maps backed by a dask.array.Array. (#7100)
  • Added missing support to find GOES-18 XRS data in ~sunpy.net.dataretriever.XRSClient. (#7108)
  • Raise an error with a helpful message when sunpy.map.GenericMap.plot is called with a non-boolean value for the annotate keyword, because the user is probably trying to specify the axes. (#7163)
  • Fixed our ASDF manifest having the incorrect ID. (#7282)
  • Fix example formatting in a few asdf schemas. (#7292)
  • Pinned the drms requirement to < 0.7 to avoid breaking changes in drms version 0.7. (#7308)

sunpy 5.0.2

22 Nov 15:58
Compare
Choose a tag to compare

What's Changed

Full Changelog: v5.0.1...v5.0.2

sunpy 5.0.1

27 Sep 17:40
v5.0.1
7328a5e
Compare
Choose a tag to compare

What's Changed

Full Changelog: v5.0.0...v5.0.1

sunpy 5.0.0

14 Jun 10:51
Compare
Choose a tag to compare

5.0.0 (2023-06-14)

Breaking Changes

  • ~sunpy.net.dataretriever.XRSClient now provides the re-processed GOES-XRS 8-15 data from NOAA. These files are now all NetCDF and not FITS files. (#6737)
  • Changed the output of sunpy.map.sample_at_coords to return the sampled values as ~astropy.units.Quantity with the appropriate units instead of merely numbers. (#6882)

Deprecations

  • Using sunpy.map.header_helper.meta_keywords is deprecated. Please see Meta Keywords Table for the list of metadata keywords used by ~sunpy.map.Map. (#6743)
  • The utility function sunpy.map.extract_along_coord is deprecated. Use sunpy.map.pixelate_coord_path, and then pass its output to sunpy.map.sample_at_coords. (#6840)
  • Parsing SDO/EVE level 0CS average files is deprecated, and will be removed in sunpy 6.0. Parsing this data is untested, and we cannot find a file to test it with. If you know where level 0CS 'averages' files can be found, please get in touch at https://community.openastronomy.org/c/sunpy/5. (#6857)
  • Fully deprecated sunpy.database, with an expected removal version of sunpy 6.0. (#6869)
  • sunpy.io.cdf, sunpy.io.file_tools and sunpy.io.jp2 sub-modules have been deprecated, and will be removed in version 5.1. This because they are designed for internal use only, and removing it from the public API gives the developers more flexibility to modify it without impacting users. (#6895)

New Features

  • A pure Python sunpy wheel is now published on PyPI with each release. pip will now default to installing the pure Python wheel instead of the source distribution on platforms other than Linux (x86-64) and macOS (x86-64 and ARM64). This should mean simpler and faster installs on such platforms, which includes the Raspberry Pi as well as some cloud computing services.

    This wheel does not contain the sunpy.io.ana compiled extension. If you need this extension (not available on Windows) you can install the sunpy source distribution with pip install --no-binary sunpy "sunpy[all]". (#6175)

  • Added three tutorials which replicate ~sunpy.map.CompositeMap functionality (sphx_glr_generated_gallery_plotting_AIA_HMI_composite.py, sphx_glr_generated_gallery_plotting_masked_composite_plot.py, sphx_glr_generated_gallery_plotting_three_map_composite.py). (#6459)

  • ~sunpy.map.GenericMap.exposure_time now looks for the exposure time in the XPOSURE key first and then the EXPTIME key. (#6557)

  • ~sunpy.map.header_helper.make_fitswcs_header now includes the keyword argument detector for setting the DETECTOR FITS keyword in the resulting header. (#6558)

  • Adds two tutorials that demonstrate how to use LASCO data in overlaying maps (sphx_glr_generated_gallery_plotting_lasco_overlay.py) and how to create a custom mask for a LASCO C2 image (sphx_glr_generated_gallery_map_lasco_mask.py). (#6576)

  • Able to run the sunpy tests doing python -m sunpy.tests.self_test. (#6600)

  • Able to detect gzip-compressed FITS files even if they don't have the .gz extension in the filename. ~sunpy.io.detect_filetype now looks for the right file signature while checking for gzipped FITS files. (#6693)

  • Added AttrAnd and AttrOr to the namespace in sunpy.net.attrs. This allows users to to avoid | or & when creating a query a larger query. (#6708)

  • ~sunpy.net.dataretriever.SUVIClient now provides GOES-18 SUVI data. (#6737)

  • The minimum required versions of several core dependencies have been updated:

    • Python 3.9
    • astropy 5.0.1
    • numpy 1.21.0

    The minimum required versions of these optional dependencies has also been updated:

    • Matplotlib 3.5.0
    • dask 2021.4.0
    • pandas 1.2.0
    • scikit-image 0.18.0
    • scipy 1.7.0 (#6742)
  • Added the utility function sunpy.map.pixelate_coord_path to fully pixelate a coordinate path according to the pixels of a given map. (#6840)

  • The minimum version of h5netcdf required by sunpy has been bumped to version 0.11.0. (#6859)

  • Able to download files from REST/TAP Data Providers from the VSO. (#6887)

  • Adding data unit into html repr for sunpy.map.Map (#6902)

  • Joined HISTORY keys with newline characters when parsing HISTORY cards from FITS header. (#6911)

  • Added the ability to query for the GOES-XRS 1 minute average data with the .XRSClient. (#6925)

  • Increased minimum version of parfive to 2.0.0.

    We are aware the change in the parfive minimum version is a release earlier than our dependency policy allows for. However, due to significant issues that parfive v2.0.0 solves and changes to remote servers, we have decided to increase it to improve the user experience when downloading files. (#6942)

Bug Fixes

  • Fixed the incorrect calculation in ~sunpy.map.header_helper.make_fitswcs_header of the rotation matrix from a rotation angle when the pixels are non-square. (#6597)
  • Return code from self_test is now non-zero if it stops due to missing dependencies. (#6600)
  • Fixed an issue with loading old EIT fits files with sunpy.map.Map where the date could not be parsed. (#6605)
  • Fixed a bug where the ~sunpy.map.GenericMap.exposure_time returned None when the exposure time key was set to zero. (#6637)
  • Fixed a bug that prevented specifying a ~astropy.coordinates.BaseCoordinateFrame (as opposed to a ~astropy.coordinates.SkyCoord) to sunpy.map.GenericMap.draw_quadrangle. (#6648)
  • HMI JPEG2000 files from Helioviewer could not be loaded due to a bug in setting the plotting normalization. This has been fixed. (#6710)
  • The data_manager was not raising failed downloads correctly and would continue as if the file existed locally. Now it will raise any errors from parfive. (#6711)
  • ~sunpy.map.sources.XRTMap will now set the unit for XRT files if the BUNIT key is missing. (#6725)
  • ~sunpy.net.dataretriever.XRSClient update use the new url for which the GOES-XRS 8-15 data is provided by NOAA. (#6737)
  • Updated ~sunpy.database to be compatible with SQLAlchemy versions >=2.0 (#6749)
  • When using autoalign=True when plotting maps, the result was misaligned by half a pixel. (#6796)
  • sunpy.map.GenericMap.submap can now handle a ~astropy.coordinates.BaseCoordinateFrame as input. (#6820)
  • Multi-line HISTORY and COMMENT keys metadata dictionaries are now correctly split into multiple history and comment cards when writing a FITS file. (#6911)
  • Pass in "max_splits" to Parfive to prevent multi connections to JSOC for JSOC only queries. (#6921)
  • When converting an astropy.wcs.WCS object to a solar coordinate frame the DATE-AVG key will be used before the DATE-OBS key, previously only DATE-OBS was checked. (#6995)
  • sunpy.map.GenericMap.rotation_matrix now applies the default values if any FITS rotation matrix keywords are missing from the header. (#7004)
  • Modified sunpy.io.special.srs.read_srs to correctly handle uppercase SRS files and supplementary sections occurring after the main data sections (I, IA, II). (#7035)

Documentation

  • Added an example of how to search for multiple wavelengths attributes for AIA data using sunpy.net.attrs.AttrOr. (#6501)
  • Added sunpy.map.P...
Read more

v4.1.5

20 Apr 17:53
Compare
Choose a tag to compare

What's Changed

Full Changelog: v4.1.4...v4.1.5

v4.0.12

20 Apr 17:53
Compare
Choose a tag to compare

What's Changed

Full Changelog: v4.0.11...v4.0.12