Skip to content

spedas/pyspedas

Repository files navigation

PySPEDAS

build Coverage Status Version Status License

The Python-based Space Physics Environment Data Analysis Software (PySPEDAS) framework supports multi-mission, multi-instrument retrieval, analysis, and visualization of heliophysics time series data.

Projects Supported

Requirements

Python 3.9+ is required.

We recommendAnacondawhich comes with a suite of packages useful for scientific data analysis. Step-by-step instructions for installing Anaconda can be found at:Windows,macOS,Linux

Installation

Virtual Environment

To avoid potential dependency issues with other Python packages, we suggest creating a virtual environment for PySPEDAS; you can create a virtual environment in your terminal with:

python -m venv pyspedas

To enter your virtual environment, run the 'activate' script:

Windows

.\pyspedas\Scripts\activate

macOS and Linux

sourcepyspedas/bin/activate

Using Jupyter notebooks with your virtual environment

To get virtual environments working with Jupyter, in the virtual environment, type:

pip install ipykernel
python -m ipykernel install --user --name pyspedas --display-name"Python (pySPEDAS)"

(note: "pyspedas" is the name of your virtual environment)

Then once you open the notebook, go to "Kernel" then "Change kernel" and select the one named "Python (PySPEDAS)"

Install

PySPEDAS supports Windows, macOS and Linux. To get started, install thepyspedaspackage using PyPI:

pip install pyspedas

Upgrade

To upgrade to the latest version of PySPEDAS:

pip install pyspedas --upgrade

Local Data Directories

The recommended way of setting your local data directory is to set theSPEDAS_DATA_DIRenvironment variable.SPEDAS_DATA_DIRacts as a root data directory for all missions, and will also be used by IDL (if you’re running a recent copy of the bleeding edge).

Mission specific data directories (e.g.,MMS_DATA_DIRfor MMS,THM_DATA_DIRfor THEMIS) can also be set, and these will overrideSPEDAS_DATA_DIR

Usage

To get started, import pyspedas and pytplot:

importpyspedas
frompytplotimporttplot

You can load data into tplot variables by callingpyspedas.mission.instrument(),e.g.,

To load and plot 1 day of THEMIS FGM data for probe 'd':

thm_fgm=pyspedas.themis.fgm(trange=['2015-10-16','2015-10-17'],probe='d')

tplot(['thd_fgs_gse','thd_fgs_gsm'])

To load and plot 2 minutes of MMS burst mode FGM data:

mms_fgm=pyspedas.mms.fgm(trange=['2015-10-16/13:05:30','2015-10-16/13:07:30'],data_rate='brst')

tplot(['mms1_fgm_b_gse_brst_l2','mms1_fgm_b_gsm_brst_l2'])

Note: by default, PySPEDAS loads all data contained in CDFs found within the requested time range; this can potentially load data outside of your requested trange. To remove the data outside of your requested trange, set thetime_clipkeyword toTrue

To load and plot 6 hours of PSP SWEAP/SPAN-i data:

spi_vars=pyspedas.psp.spi(trange=['2018-11-5','2018-11-5/06:00'],time_clip=True)

tplot(['DENS','VEL','T_TENSOR','TEMP'])

To download 5 days of STEREO magnetometer data (but not load them into tplot variables):

stereo_files=pyspedas.stereo.mag(trange=['2013-11-1','2013-11-6'],downloadonly=True)

Standard Options

  • trange:two-element list specifying the time range of interest. This keyword accepts a wide range of formats
  • time_clip:if set, clip the variables to the exact time range specified by thetrangekeyword
  • suffix:string specifying a suffix to append to the loaded variables
  • varformat:string specifying which CDF variables to load; accepts the wild cards * and?
  • varnames:string specifying which CDF variables to load (exact names)
  • get_support_data:if set, load the support variables from the CDFs
  • downloadonly:if set, download the files but do not load them into tplot
  • no_update:if set, only load the data from the local cache
  • notplot:if set, load the variables into dictionaries containing numpy arrays (instead of creating the tplot variables)

Examples

Please see the following notebooks for examples of using PySPEDAS

PyTplot Basics

Loading Data

Plotting

Additional examples of loading and plotting data can be found in the documentation for the project you're interested in (PySPEDAS projects), as well as the project's README file.

Dates and Times

Coordinate Transformations

Analysis

Documentation

For more information, please see our HTML documentation at:

https://pyspedas.readthedocs.io/

Getting Help

To find the options supported, callhelpon the instrument function you're interested in:

help(pyspedas.themis.fgm)

You can ask questions by creating an issue or by joining theSPEDAS mailing list.

PyTplot

Pytplot is a separate project, that replicates the IDL "tplot" functionality. Pyspedas uses a modified version of pytplot with matplotlib as the plotting library.

Contributing

We welcome contributions to PySPEDAS; to learn how you can contribute, please see ourContributing Guide

Plug-in Development

An introduction to PySPEDAS plug-in development can be found here:

Introduction to PySPEDAS plug-in development

Code of Conduct

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. To learn more, please see ourCode of Conduct.

Additional Information

For examples of pyspedas, see:https://github.com/spedas/pyspedas_examples

For MMS examples, see:https://github.com/spedas/mms-examples

For pytplot (matplotlib version), see:https://github.com/MAVENSDC/PyTplot/tree/matplotlib-backend

For cdflib, see:https://github.com/MAVENSDC/cdflib

For SPEDAS, seehttp://spedas.org/