Skip to main content

A simple Python package to deal with main Space Physics WebServices (CDA, CSA, AMDA and SSC).

Project description

Chat on Matrix https://img.shields.io/pypi/v/speasy.svg https://github.com/SciQLop/speasy/workflows/Tests/badge.svg Documentation Status Coverage Status Total alerts Language grade: Python Zendoo DOI Discover on MyBinder Speasy proxy uptime (30 days)

Speasy is an open source Python client for Space Physics web services such as CDAWEB or AMDA. Most space physics data analysis starts with finding which server provides which dataset then figuring out how to download them. This can be difficult specially for students or newcomers, Speasy try to remove all difficulties by providing an unique and simple API to access them all. Speasy aims to support as much as possible web services and also cover a maximum of features they propose.

Quickstart

Installing Speasy with pip (more details here):

$ python -m pip install speasy
# or
$ python -m pip install --user speasy

Getting data is as simple as:

import speasy as spz
ace_mag = spz.get_data('amda/imf', "2016-6-2", "2016-6-5")

Where amda is the webservice and imf is the product id you will get with this request.

Using the dynamic inventory this can be even simpler:

import speasy as spz
amda_tree = spz.inventory.data_tree.amda
ace_mag = spz.get_data(amda_tree.Parameters.ACE.MFI.ace_imf_all.imf, "2016-6-2", "2016-6-5")

Will produce the exact same result than previous example but has the advantage to be easier to manipulate since you can discover available data from your favourite Python environment completion such as IPython or notebooks (might not work from IDEs).

This also works with SSCWEB, you can easily download trajectories:

import speasy as spz
sscweb_tree = spz.inventory.data_tree.ssc
solo = spz.get_data(sscweb_tree.Trajectories.solarorbiter, "2021-01-01", "2021-02-01")

More complex requests like this one are supported:

import speasy as spz
products = [
    spz.inventories.tree.amda.Parameters.Wind.SWE.wnd_swe_kp.wnd_swe_vth,
    spz.inventories.tree.amda.Parameters.Wind.SWE.wnd_swe_kp.wnd_swe_pdyn,
    spz.inventories.tree.amda.Parameters.Wind.SWE.wnd_swe_kp.wnd_swe_n,
    spz.inventories.tree.cda.Wind.WIND.MFI.WI_H2_MFI.BGSE,
    spz.inventories.tree.ssc.Trajectories.wind,
]
intervals = [["2010-01-02", "2010-01-02T10"], ["2009-08-02", "2009-08-02T10"]]
data = spz.get_data(products, intervals)

Documentation

Check out the documentation and examples at speasy documentation.

Features

  • Simple and intuitive API (spz.get_data to get them all)

  • Pandas DataFrame like interface for variables

  • Quick functions to convert a variable to a Pandas DataFrame

  • Local cache to avoid repeating twice the same request

  • Can take advantage of SciQLop dedicated proxy as a community backed ultra fast cache

  • Full support of AMDA API

  • Can retrieve time-series from AMDA, CDAWeb, CSA, SSCWeb

Examples

See here for a complete list of examples.

Caveats

  • installing speasy on both python 3.7 or less and python 3.8 or plus at the same time doesn’t work since entries stored in cache by python 3.8+ are not readable by python 3.7-.

  • Speasy is not a plotting package, while it provides basic plot features, it is not meant to produce publication ready figures.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

The development of speasy is supported by the CDPP.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

speasy-1.0.1.tar.gz (50.1 kB view hashes)

Uploaded Source

Built Distribution

speasy-1.0.1-py3-none-any.whl (65.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page