- Added support for loading Voyager merged datasets in heliopy.data.voyager.. (#992)
- Fixed downloading PSP/FIELDS data. (#988)
- Updated the PSP SPICE kernels to their latest versions. (#989)
- Level 3 data products can now be downloaded using heliopy.data.solo.download. (#966)
- Fixed access to some Solar Orbiter SWA data products in heliopy.data.solo. (#957)
- Updated links to PSP SPICE kernels in heliopy.data.spice. (#961)
- Improved performance of heliopy.spice.Trajectory.generate_positions. (#963)
- Fixed a bug in :file:`setup.py` that prevented HelioPy from being installed on other readthedocs projects.
- All SPICE kernels are now automatically furnished when they are loaded into a ~heliopy.spice object. (#938)
- The classes in heliopy.data.spice have been updated, to allow for different
types of SPICE files:
- All kernels are now derived from KernelBase.
- SPK kernels have their own class, SPKKernel.
- Calling Kernel will automatically detect and create the appropriate kernel class. (#941)
- When a SPKKernel is created, the SPICE kernel is now validated and an error raised if the given file is not a valid SPK kernel. (#941)
- Updated link to the Solar Orbiter SPICE kernel (#942)
- Added the ability to download science quality data to heliopy.data.solo.download. (#934)
- SWEAP functions in heliopy.data.psp have been updated to take into account a change in file version number that occurred at the end of 2019. (#932)
- Added ~heliopy.data.stereo.mag_l1_rtn and ~heliopy.data.stereo.magplasma_l2 to heliopy.data.stereo. (#928)
- heliopy.data.stereo functions now also accept
'STA'
or'STB'
as a spacecraft identifier. (#929)
- Fixed the download URL for functions in heliopy.data.helios. (#927)
- Added heliopy.data.psp.merged_mag_plasma for merged plasma and magnetic field data from PSP. (#912)
- Added the ability to download Solar Orbiter low latency data in heliopy.data.solo.download. (#919)
- Added the heliopy.data.stereo module, with ~heliopy.data.stereo.coho1hr_merged. To request more STEREO data products, please open an issue at https://github.com/heliopython/heliopy/issues. (#923)
- Support for converting from the
J2000
coordinate frame to astropy coordinates has been removed in heliopy.spice.Trajectory.coords. If you want to convert to astropy coordinates, generate the trajectory in theIAU_SUN
coordinate system, get the coords, and then.transform_to()
the desired astropy coordinate frame from there. (#913)
- The coordinates returned by heliopy.spice.Trajectory.coords when the
coordinate frame is
"IAU_SUN"
have been fixed to properly take into account light travel time. In order to ensure consistency, coordinates can only be created with sunpy versions > 2. (#911)
- Added heliopy.data.psp.fields_mag_rtn_4_per_cycle download function. (#896)
- Added 1 minute and 5 minute OMNI data products to heliopy.data.omni. (#907)
- Added
'mec'
to the list of allowed instruments in heliopy.data.mms. (#908)
- The OMNI data download functions have been updated to use CDAWeb as their source.
This means that the
heliopy.data.omni.low
function has been removed, and replaced by heliopy.data.omni.h0_mrg1hr. This is the same 1 hour data product, but some of the variable names will have changed. (#904)
- Added heliopy.data.psp.fields_mag_rtn_4_per_cycle. (#896)
- Fixed Solar Orbiter kernel download in heliopy.data.spice. (#898)
heliopy.spice.setup_spice
no longer needs to be manually run to setup common spice files. (#899)
- Fixed the documentation build on readthedocs. (#894)
This release contains several breaking changes to heliopy.spice and heliopy.data.spice, made to accommodate new high level objects to interact with SPICE. The following new objects have been added:
- ~heliopy.spice.SPKKernel, to hold a single SPICE SPK kernel. This comes with helper methods to find the bodies stored within a kernel, and the time coverage of a given body within a kernel.
- ~heliopy.spice.Body, to hold a single body (e.g. a planet, a spacecraft). This contains helper methods to easily convert between body names and body ids.
In addition, heliopy.spice no longer automatically loads commonly needed files on import. This means if you want to use heliopy.spice, it is highly recommended to run heliopy.spice.setup_spice() first.
The existing code has been changed to use the new classes, with the following breaking changes:
- heliopy.data.spice.get_kernel now returns a list of ~heliopy.spice.SPKKernel.
To get the file name of a kernel as before do
kernel.fname
. - heliopy.spice.furnish must how take a ~heliopy.spice.SPKKernel (or list of).
To create a kernel object from a filename do
SPKKernel(fname)
.
- :mod:`heliopy.spice` now contains the :class:`~heliopy.spice.Body` object, which allows for easy access of both a body name and id code, validating that either a name or id code are valid on creation.
- :class:`~heliopy.spice.Trajctory` now stores the
.target
and.observing
body atributes as :class:`~heliopy.spice.Body` objects. To get the name or id, use.id
or.name
. (#868) - Added the
abcorr
argument to heliopy.spice.Trajectory.generate_positions() to allow optional aberration correction. By default this is set to no correction. (#873) - Added the Cassini SPICE kernel to heliopy.data.spice. (#876)
- Updated the Solar Orbiter SPICE kernel to the latest release in heliopy.data.spice. (#879)
- Added several new solar energetic particle products to heliopy.data.ace. (#882)
- Updated the url for downloading Helios 4Hz magnetic field data. (#856)
- Avoid converting all CDF data to floating point data, to save significant memory when loading a CDF file. (#858)
- Added PSP SWEAP level 2 data to heliopy.data.psp. (#828)
- Added PSP FIELDS high resolution data import to heliopy.data.psp. (#842)
- heliopy.spice.Trajectory.generate_positions now accepts times as anything that can be parsed by astropy.time.Time. (#831)
- Added a
include
argument to heliopy.data.util.cdf2df, to allow loading a subset of variables in a CDF file. (#841) - Improved time performance of loading CDF files. (#844, #845, #847)
- Bad values in CDF files are now automatically detected and set to NaN values.
As a result the
badvalues
argument to heliopy.data.util.cdf2df is now deprecated. (#848)
- Cleaned up the docstrings of heliopy.data. (#846)
A new module heliopy.models has been added to contain heliospheric concepts, the first one of which is :class:`heliopy.models.ParkerSpiral`. (#768)
All functions in heliopy.data.wind now download data in monthly (as opposed to daily) intervals. You may need to delete existing data to correctly load complete datasets. (#772)
:class:`heliopy.spice.Trajectory` objects now have the :attr:`~heliopy.spice.Trajectory.coords` property, that contains the trajectory coordinates as an :class:`~astropy.coordinates.SkyCoord` object.
In order to do this currently only the 'J2000' and 'IAU_SUN' spice frames are supported as they have direct mappings to Sunpy/Astropy coordinate systems, but it is possible to generate coordinates in either of these systems and then transform them post-hoc to another Sunpy/Astropy coordinate system. (#776)
heliopy.data.wind.swe_h3() has been added. (#800)
heliopy.data.wind.threedp_elpd() has been added. (#802)
The new heliopy.data.psp module contains methods to automatically download and load Parker Solar Probe data. Currently SWEAP SPC L3 data and FIELDS MAG fluxgate data are available. (#822)
- A handful of data download functions have migrated to using the CDAS restful
service, and have therefore had their call signatures changed. In particular
the following functions have lost their
try_download
keyword argument: heliopy.data.ulysses.swics_heavy_ions (#747), heliopy.data.ulysses.swics_abundances (#747), heliopy.data.ulysses.fgm_hires (#748), heliopy.data.ulysses.swoops_ions (#761), heliopy.data.omni.low (#765), heliopy.data.imp.merged (#771) - The times stored in the
time
property of :class:`heliopy.spice.Trajectory` are now always parsed by astropy.time.Time before being stored, and are always returned as a ~astropy.time.Time object, no matter what format they were supplied in. (#794) - The
heliopy.coordinates
module has been removed completely. This only ever contained two coordinate frames and a single transformation, both of which are implemented in sunpy.coordinates now. (#820) - heliopy.data.cassini data download methods have been updated to use the newly released V2 Cassini MAG data. You may need to delete old data to be able to download the newer data.
- Fixed a bug in loading .cdf data where either all files were either converted to .hdf files or at least one of the intervals of data is missing. (#768)
- Fixed downloading narrow time intervals of MMS data. (#810)
- Added the SOHO SPICE kernels to heliopy.data.spice. (#777)
- heliopy.data.spice can now be imported without internet access. If this is the case determining the names of STEREO kernels (which requires internet) will not be possible. (#782)
- Fixed loading Ulysses data when at least some of it isn't available. (#795)
- Fix heliopy.data.helios.mag_4hz data downloading (#741)
- Switch IMP downloading from FTP site to HTTPS site, since anonymous FTP access to NASA servers no longer works. (#749)
- heliopy.data.cdasrest.get_cdas_url and heliopy.data.cdasrest.get_data have been generalised, and can now be used to download data in an arbitrary interval instead of just a single day. (#714)
- heliopy.data.ace functions that download low cadence data (e.g. composition data) now download yearly instead of daily files, speeding up data download. (#715)
- heliopy.data.cdasrest.get_cdas_url and heliopy.data.cdasrest.get_data
now take
starttime
andendtime
arguments instead of just adate
argument, and their signatures have changed to reflect this. (#714)
- Fix bug that prevented MMS data from spacecraft 4 being downloaded. (#719)
- Correctly attach units to MMS data. (#726)
- Added a graph showing the available coordinate transformations to
heliopy.coordinates
- Added STEREO-B kernels to heliopy.data.spice
- Added automatic spice kernel detection for the STEREO spacecraft to heliopy.data.spice
- Switched the download progress bar from
wget
based totqdm
based, which should work better in notebooks.
- Fixed a bug where not all MMS files were downloaded for a large query.
- Correctly removed bad values in heliopy.data.omni.
- The deprecated heliopy.data.wind.swe_h3 and heliopy.data.wind.threedp_sfpd have been removed.
- heliopy.data.wind.swe_h3 and heliopy.data.wind.threedp_sfpd are deprecated and will be removed in version 0.7.0. This is because they currently use pandas MultiIndex structures, which are not the recommended way to store 2-or-more dimensional data. In the future they are likely to be re-written to use xarray.
- Data downloaded through CDAS is now moved from a temporary folder using
shutil
, fixing it when the temp folder and destination folder are on different filesystems.
- heliopy.data.spice.get_kernel now raises a warning instead of an error if a kernel can't be downloaded.
- heliopy.data.helios.merged now filters out bad values and converts them to NaNs.
- heliopy.spice now only loads core SPICE kernels once, instead of every time the module is imported.
- heliopy.data.spice.get_kernel now prints a warning instead of raising an error if a kernel cannot be downloaded.
- Added the ability for :class:`heliopy.spice.Trajectory` objects to compute and return the body velocity.
- Available spice kernels in heliopy.data.spice are now split into kernels that have been reconstructed (ie. actual trajectories) and predicted trajectories.
- The predicted Bepi Columbo spice kernel has been added to heliopy.data.spice
- The heliopy.data.ace.swi_h3b function has been added.
- heliopy.data.cdasrest.get_variables and
heliopy.data.cdasrest.get_data now have a
timeout
keyword argument, allowing manual specification of the timeout when fetching data from a server. - Importing heliopy.spice now automatically loads common heliospheric coordinate systems.
- Kernels available in heliopy.data.spice have been cleaned up, meaning some are now not available or have been moved to the predicted section.
- A handful of data download functions have migrated to using the CDAS restful
service, and have therefore had their call signatures changed. In particular:
- heliopy.data.messenger.mag_rtn has lost its
try_download
kwarg - heliopy.data.helios.merged has lost itstry_download
kwarg
The following IMP download functions, which only ever worked for IMP8 have been renamed:
mitplasma_h0
has been renamed ~heliopy.data.imp.i8_mitplasmamag320ms
has been renamed ~heliopy.data.imp.i8_mag320ms
- Added Parker Solar Probe spice kernels to heliopy.data.spice.
- Added a generic functions to download MMS data. Available files can be queried using heliopy.data.mms.available_files, and files can be downloaded using heliopy.data.mms.download_files
- Updated links to the STEREO-A spice kernels.
- heliopy.data.mms.fgm_survey has been removed in favour of the more
general heliopy.data.mms.fgm. To download survey mode FGM data use
the new method and set the
mode
keyword argument tosrvy
.
- Added heliopy.data.mms.fpi_des_moms function. :issue:`601`
- Added heliopy.data.wind.threedp_e0_emfits function. :issue:`606`
- Fixed heliopy.data.mms.fgm_survey data loading. :issue:`601`
- The heliopy.data.ace module now contains all the magnetic field and particle data produces produced by ACE. :issue:`577`, :issue:`578`
- STEREO-A spice kernels have been added. :issue:`585`
- The accidentally removed Ulysses spice kernel has returned. :issue:`582`
- heliopy.data.helper.cdfpeek has been updated to work with cdflib, and now prints all CDF file information.
HelioPy now only supports Python versions 3.6 and higher.
- HelioPy has been integrated with SunPy TimeSeries and AstroPy Units. All of the HelioPy modules now return physical units with data.
- Added a new .data.util.cdf_units function that can extract the UNIT attribute from CDF files.
- Low resolution OMNI data import has been added in .data.omni.low function.
- Magnetic Field data from DSCOVR Spacecraft can now be imported using the .data.dscovr.mag_h0 function.
Methods in heliopy.data no longer returns a Pandas DataFrame, but now return a SunPy timeseries object. To get the underlying data, you can still do:
dataframe = timeseries.data
For an example of how to use the new object, see :ref:`sphx_glr_auto_examples_timeseries_plotting.py`.
Data import has had a major overhaul, so that every column in CDF files now gets automatically imported and retains its name without being changed by HelioPy. This means column names in several data products are now different, to reflect their original name in the CDF files instead of a custom name that was previously assigned by HelioPy.
.data.helios.merged, .data.helios.mag_4hz, .data.helios.corefit and .data.helios.mag_ness no longer take a
verbose
keyword argument. :issue:`467`
- .data.imp.merged no longer imports redundant columns.
- Lots of small documentation updates.
- .data.helios.distparams now has an extra
'data_rate'
column, which determines whether a given distribution function was transmitted in high or low data mode. :issue:`529`
- The new HelioPy logo has been added to the documentation. :issue:`448`, :issue:`447`
- The new data version number of heliopy.data.mms.fpi_dis_moms has been updated.
- HelioPy can now be installed using conda.
- The list of kernels available for automatic download in heliopy.data.spice has been updated, and some names changed. :issue:`408`
- .spice.Trajectory.generate_positions can now generate positions at a resolution of one second instead of one day. :issue:`405`
- A duplicate "z gsm" column header in the data returned by .data.imp.mag15s has been corrected. :issue:`396`
- heliopy.data.sunspot added an additional functionality to import sunspot data in three different timeframes - daily, monthly and yearly.
- The inventory of spice kernels in heliopy.data.spice now includes "Helios 1 Reconstructed", "Helios 1 Predicted", "Juno Reconstructed", "Juno Predicted" and "Helios 2" kernels.
- heliopy.spice.furnish now accepts a list of filenames as well as individual filenames.
- A lot of new functions for downloading ACE data have been added to heliopy.data.ace.
- heliopy.data.spice.get_kernel now returns a list of filenames instead of a single filename string.
- Most of the functions that were in heliopy.data.helper have been moved to heliopy.data.util. The ones the remain in heliopy.data.helper are useful for users, and the ones in heliopy.data.util are used internally as utility functions for data import.
heliopy.data.helios.trajectory
has been removed. To get Helios trajectory data use the heliopy.spice and heliopy.data.spice modules.
- ~heliopy.data.ulysses.swics_abundances and ~heliopy.data.ulysses.swics_heavy_ions methods added for loading SWICS data from the Ulysses mission.
- ~heliopy.data.helper.cdfpeek method added for peeking inside CDF files.
- heliopy.spice.Trajectory.generate_positions now takes a list of dates/times at which to generate orbital positions, instead of a start time, stop time, and number of steps. The old behaviour can be recovered by manually generating an evenly spaced list of times.
HelioPy now contiains code for working with SPICE kernels. See the following modules for more information:
- heliopy.data.spice module for downloading spice kernels
- heliopy.spice module for automatically processing spice kernels
- The
heliopy.plasma
module has been removed (see http://www.plasmapy.org/ for the recommended alternative) heliopy.plot
code removed
- Convert examples gallery to automatically generate plots
- Added heliopy.data.helper.listdata method for easily viewing the amount of data HelioPy is storing locally.
- Added heliopy.data.wind.threedp_sfpd method for importing WIND 3DP sfpd data.
- Correctly report download percentage when downloading files.
- Fix issue where heliopy.data.helios.corefit made duplicate .hdf files on days where no data is available.