This document contains frequently asked questions (FAQs) about the cdasws Python library.
Does the cdasws library support HTTP persistent connections? Yes. The cdasws library uses the python requests library including its support of persistent connections and urllib3's connection pooling.
Does the cdasws client library support caching and HTTP conditional GETs? No. Not at this time but this may be added in the future since the CDAS web services support this.
Does the cdasws library support the existing CDAS web service requests that produce higher-level products such as plots, movies/animations, CSV, netCDF, audio, and CDFML? Yes.
How does this library differ from the Heliophysics Application Programming Interface (HAPI) client python library and the ai.cdas python library? The CDAS web services and the HAPI service are fundamentally different services which can provide functionally similar access to the CDAS data. The following table summarizes the different features of the libraries for accessing data from NASA's Coordinated Data Analysis System repository.
Feature Support | cdasws | ai.cdas | hapi |
---|---|---|---|
SpacePy datamodel | yes | no | no |
xarray.Dataset | yes | no | no |
pandas.DataFrame | yes | no | no |
Includes all source6 and ISTP/SPDF metadata | yes | no | no |
Streaming data reception | no | no | no1 |
Binary data transfer | yes | yes | yes |
Compressed data transfer | yes | yes | no5 |
Access to cdaweb netCDF data sets | yes | yes | no4 |
Access to non-cdaweb data sets | no | no | yes |
Search server datasets (e.g., by instrument type) | yes | yes | no |
Data gap information | yes | no | no |
Data binning | yes | no | no |
CDAWeb plotting, movies, audification, etc. | yes | no | no |
Dependent upon CDF (C) library | no2 | no3 | no |
Access by Digital Object Identifiers(DOIs) | yes | ? | no |
Access by SPASE Resource Identifiers | yes | ? | no |
Although the HAPI protocol was specifically designed for data streaming, at this time, the HAPI python client library does not support streaming data reception. That is, the library waits until all data has been received before returning any of it to the caller. ↩
A client that does not call the get_data method or one that wants the data returned in an xarray.Dataset is not dependent upon the CDF C library (or SpacePy). However, to return data in the SpacePy data model, the get_data method is dependent on pycdf which is dependent upon the cdf C library. ↩
ai.cdas can be used with or without CDF. CDF can be avoided by transfering the data in an ASCII representation. ↩
At this time, cdaweb's HAPI server does not support access to datasets with netCDF files (for example, FORMOSAT5_AIP_IDN, GOLD_L2_NMAX, GOLD_L2_ON2, GOLD_L2_TDISK, ICON_L2-7_IVM-A, PMC-TURBO_L1_BOLIDE_VBC). This is a current limitation of the cdaweb HAPI server and not of the HAPI protocol. ↩
HAPI is a streaming protocol which for HTTP 1.1, requires chunked transfer encoding. When chunked transfer encoding is combined with HTTP compression, the content stream is first compressed, then chunked; so the chunk encoding itself is not compressed, and the data in each chunk is not compressed individually. The client then decodes the stream by concatenating the chunks and uncompressing the result. So the use of HTTP compression defeats the purpose of the streaming. Although compression is technically possible. ↩
All source metadata includes project specific metadata. For example,
the metadata below shows a few additional values for the
MMS1_EDP_FAST_L2_DCE dataset that is only available through the cdasw API:
DATA_VERSION: v3.0.0
CALIBRATION_FILE: /mms/itfhome/mms-fieldspro/cal/mms1_edp_fast...
GENERATION_DATE: 20230308
GENERATED_BY: IRFU Matlab v1.10.0 and LASP IDL v8.4 while ...
SKELETON_VERSION: v0.0.8
PARENTS: ['CDF>mms1_edp_fast_l2pre_dce_20230204_v3.0....
CDAWEB_PARENTS: ['mms1_edp_fast_l2_dce_00000000_v01', 'mms1_...
...
↩