Skip to main content

NASA's Coordinated Data Analysis System Web Service Client Library

Project description

Synopsis

This library provides a simple python interface to the data and services of NASA's Coordinated Data Analysis System (CDAS). This library implements the client side of the CDAS RESTful web services and returns data in the SpacePy data model with all the original ISTP/SPDF metadata. For more details about the CDAS web services, see https://cdaweb.sci.gsfc.nasa.gov/WebServices/REST/.

Code Example

The module contains example code call for most of the available web services. To run the included example, do the following

python -m cdasws

The following code demonstrates how to access magnetic field measurements from the ACE mission dataset

from cdasws import CdasWs

cdas = CdasWs()
data = cdas.get_data('AC_H1_MFI', ['Magnitude', 'BGSEc'],
                     '2009-06-01T00:00:00Z', '2009-06-01T00:10:00Z')[1]
print(data)
{'Epoch': VarCopy([datetime.datetime(2009, 6, 1, 0, 0),
     datetime.datetime(2009, 6, 1, 0, 4),
     datetime.datetime(2009, 6, 1, 0, 8)], dtype=object), 'Magnitude': VarCopy([3.495, 3.474, 3.477], dtype=float32), 'BGSEc': VarCopy([[-0.106,  2.521, -2.391],
     [-0.412,  2.402, -2.449],
     [-0.094,  2.309, -2.587]], dtype=float32), 'cartesian': VarCopy(['x_component', 'y_component', 'z_component'], dtype='<U11'), 'metavar0': VarCopy(['Bx GSE', 'By GSE', 'Bz GSE'], dtype='<U6')}

print(data['Magnitude'].attrs)

{'FIELDNAM': 'B-field magnitude', 'VALIDMIN': 0.0, 'VALIDMAX': 500.0, 'SCALEMIN': 0.0, 'SCALEMAX': 10.0, 'UNITS': 'nT', 'FORMAT': 'F8.3', 'VAR_TYPE': 'data', 'DICT_KEY': 'magnetic_field>magnitude', 'FILLVAL': -1e+31, 'DEPEND_0': 'Epoch', 'CATDESC': 'B-field magnitude', 'LABLAXIS': '<|B|>', 'DISPLAY_TYPE': 'time_series', 'DIM_SIZES': 0}

To have uniformly spaced (with respect to time) values computed, add the binData keyword paramter like this

status, data = cdas.get_data('AC_H1_MFI', ['Magnitude', 'BGSEc'],
                             '2009-06-01T00:00:00Z', '2009-06-01T00:10:00Z',
                             binData={
                                 'interval': 60.0,
                                 'interpolateMissingValues': True,
                                 'sigmaMultiplier': 4
                             })
print(data)

{'Epoch_bin': VarCopy([datetime.datetime(2009, 6, 1, 0, 0, 30),
     datetime.datetime(2009, 6, 1, 0, 1, 30),
     datetime.datetime(2009, 6, 1, 0, 2, 30),
     datetime.datetime(2009, 6, 1, 0, 3, 30),
     datetime.datetime(2009, 6, 1, 0, 4, 30),
     datetime.datetime(2009, 6, 1, 0, 5, 30),
     datetime.datetime(2009, 6, 1, 0, 6, 30),
     datetime.datetime(2009, 6, 1, 0, 7, 30),
     datetime.datetime(2009, 6, 1, 0, 8, 30),
     datetime.datetime(2009, 6, 1, 0, 9, 30)], dtype=object), 'Epoch': VarCopy([datetime.datetime(2009, 6, 1, 0, 0),
     datetime.datetime(2009, 6, 1, 0, 4),
     datetime.datetime(2009, 6, 1, 0, 8)], dtype=object), 'Magnitude': VarCopy([3.495  , 3.48975, 3.4845 , 3.47925, 3.474  , 3.47475, 3.4755 ,
     3.47625, 3.477  , 3.477  ], dtype=float32), 'BGSEc': VarCopy([[-0.106    ,  2.521    , -2.391    ],
     [-0.1825   ,  2.49125  , -2.4055   ],
     [-0.259    ,  2.4615   , -2.42     ],
     [-0.3355   ,  2.4317498, -2.4345   ],
     [-0.412    ,  2.402    , -2.449    ],
     [-0.3325   ,  2.3787498, -2.4835   ],
     [-0.253    ,  2.3555   , -2.518    ],
     [-0.1735   ,  2.33225  , -2.5524998],
     [-0.094    ,  2.309    , -2.587    ],
     [-0.094    ,  2.309    , -2.587    ]], dtype=float32), 'MAGNITUDE_NBIN': VarCopy([1., 0., 0., 0., 1., 0., 0., 0., 1., 0.], dtype=float32), 'MAGNITUDE_BIN_DELTA_MINUS_VAR': VarCopy([-1.e+31, -1.e+31, -1.e+31, -1.e+31, -1.e+31, -1.e+31, -1.e+31,
     -1.e+31, -1.e+31, -1.e+31], dtype=float32), 'MAGNITUDE_BIN_DELTA_PLUS_VAR': VarCopy([-1.e+31, -1.e+31, -1.e+31, -1.e+31, -1.e+31, -1.e+31, -1.e+31,
     -1.e+31, -1.e+31, -1.e+31], dtype=float32), 'BGSEC_NBIN': VarCopy([[ 1.,  1.,  1.],
     [-0., -0., -0.],
     [-0., -0., -0.],
     [-0., -0., -0.],
     [ 1.,  1.,  1.],
     [-0., -0., -0.],
     [-0., -0., -0.],
     [-0., -0., -0.],
     [ 1.,  1.,  1.],
     [-0., -0., -0.]], dtype=float32), 'BGSEC_BIN_DELTA_MINUS_VAR': VarCopy([[-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31]], dtype=float32), 'BGSEC_BIN_DELTA_PLUS_VAR': VarCopy([[-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31],
     [-1.e+31, -1.e+31, -1.e+31]], dtype=float32), 'cartesian_bin': VarCopy(['x_component', 'y_component', 'z_component'], dtype='<U11'), 'cartesian': VarCopy(['x_component', 'y_component', 'z_component'], dtype='<U11'), 'metavar0': VarCopy(['Bx GSE', 'By GSE', 'Bz GSE'], dtype='<U6'), 'metavar1': VarCopy(['# of Bx GSE', '# of By GSE', '# of Bz GSE'], dtype='<U11'), 'metavar2': VarCopy('# of ', dtype='<U5')}

Motivation

This library hides the HTTP, JSON/XML, and CDF details of the CDAS web services. A python developer only has to deal with python objects and methods (primarily the SpacePy data model object with full ISTP/SPDF metadata).

Dependencies

The primary dependency is SpacePy. Refer to the SpacePy documentation for the details of SpacePy's dependencies. In particular, this module depends upon the SpacePy data model's CDF import capability which is not automatically installed with SpacePy.

Installation

As noted in the dependencies above, you must install the CDF library by following the procedures at the CDF web site.

Then, to install this module

$ pip install cdasws

API Reference

Refer to cdasws module API reference

or use the standard python help mechanism.

from cdasws import CdasWs
help(CdasWs)

Tests

The tests directory contains unittest tests.

Contributors

Bernie Harris.
e-mail for support.

License

This code is licensed under the NASA Open Source Agreement (NOSA).

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

cdasws-0.1.1.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

cdasws-0.1.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file cdasws-0.1.1.tar.gz.

File metadata

  • Download URL: cdasws-0.1.1.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for cdasws-0.1.1.tar.gz
Algorithm Hash digest
SHA256 afa96705416de013b7187d90f31ccc25e2b67fee4e3d65077e70b2679711f27b
MD5 4c5aafa36c0641333b6e2265b1de37a8
BLAKE2b-256 24848eac097da854f9366f399342b8f2e18cacb5e6af83e5d7011eaeb4d8dbf6

See more details on using hashes here.

File details

Details for the file cdasws-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: cdasws-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for cdasws-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4a2f8bbaeea9bec8ae84dc6e38f8d8dbb44307b4c45c71146d7381a4dda0a1ef
MD5 aee362ab7fc78669d53c5ec06a1e7cc4
BLAKE2b-256 88d58449528c99f4d0fbf7078c50090fe429ca682a23c73ab2dddc29521ce937

See more details on using hashes here.

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