HAPI Client for Python
Basic usage examples for various HAPI servers are given in hapi_demo.py. See also
- Examples section of a Jupyter Notebook hosted on Google Colab:
.
- PyHC Summer School tutorials
pip install hapiclient --upgrade
# or
pip install 'git+https://github.com/hapi-server/client-python' --upgradeThe optional hapiplot package provides basic preview plotting capabilities of data from a HAPI server. The Plotting section of the hapiclient Jupyter Notebook shows how to plot the output of hapiclient using many other plotting libraries.
To install hapiplot, use
python -m pip install hapiplot --upgrade
# or
python -m pip install 'git+https://github.com/hapi-server/plot-python' --upgradeSee the Appendix for a fail-safe installation method.
# Get Dst index from CDAWeb HAPI server
from hapiclient import hapi
# See http://hapi-server.org/servers/ for a list of
# other HAPI servers and datasets.
server = 'https://cdaweb.gsfc.nasa.gov/hapi'
dataset = 'OMNI2_H0_MRG1HR'
start = '2003-09-01T00:00:00'
stop = '2003-12-01T00:00:00'
parameters = 'DST1800'
opts = {'logging': True}
# See misc/hapi_logging_demo.py for example of using conventional Python logging.
# Get data
data, meta = hapi(server, dataset, parameters, start, stop, **opts)
print(meta)
print(data)
# Plot all parameters
from hapiplot import hapiplot
hapiplot(data, meta)Basic usage examples for various HAPI servers are given in hapi_demo.py and the Examples section of a Jupyter Notebook hosted on Google Colab.
See http://hapi-server.org/servers/ for a list of HAPI servers and datasets.
All of the features are extensively demonstrated in hapi_demo.ipynb, a Jupyter Notebook that can be viewed an executed on Google Colab.
See also the examples in the Metadata Model section of the hapiclient Jupyter Notebook.
The HAPI client metadata model is intentionally minimal and closely follows that of the HAPI metadata model. We expect that another library will be developed that allows high-level search and grouping of information from HAPI servers. See also issue #106.
See also the examples in the Data Model section of the hapiclient Jupyter Notebook. The examples include
- Fast and well-tested conversion from ISO 8601 timestamp strings to Python
datetimeobjects - Putting the content of
datain a PandasDataFrameobject - Creating an Astropy NDArray
A request for data of the form
data, meta = hapi(server, dataset, parameters, start, stop)
returns the Numpy N-D array data and a Python dictionary meta from a HAPI-compliant data server server. The structure of data and meta mirrors the structure of a response from a HAPI server.
The HAPI client data model is intentionally basic. There is an ongoing discussion of a data model for Heliophysics data among the PyHC community. When this data model is complete, a function that converts data and meta to that data model will be included in the hapiclient package.
As of 2026-04-14, Python 3.8+ is available with tox-env.
git clone https://github.com/hapi-server/client-python
cd client-python; python -m pip install -e .
# Run a specific test on current Python version (default is log_level=INFO
# for hapiclient logger and test logger when executed this way).
python test/test_hapi_data_requests.py
# Run a specific test on a specific Python version with all logging
tox -e py311 -- test/test_hapi_data_requests.py
# Set log level for test logger
tox -e py311 -- test/test_hapi_data_requests.py --log-level=INFO
# Run a specific test on all Python versions set by tox.ini `envlist`
tox -- test/test_hapi_data_requests.py
# Run all tests in ./test
tox
# Run long-running tests
tox -e long-test
# Run long-running tests on a specific Python version
tox -e long-test --override testenv:long-test.basepython=python3.11As of 2026-04-14, Python 3.5+ is available with Anaconda.
git clone https://github.com/hapi-server/client-python
cd client-python; python -m pip install -e .or, create an isolated Anaconda installation (downloads and installs latest Miniconda3) using
make install PYTHON=python3.6
# Execute command displayed to activate isolated environmentThe command pip install -e . creates symlinks so that the local package is
used instead of an installed package. You may need to execute python -m pip uninstall hapiclient to ensure the local package is used. To check the version installed, use python -m pip list | grep hapiclient.
To run tests before a commit, execute
make repository-testTo run an individual unit test in a Python session, use, e.g.,
cd test; python test_hapitime_reformat.pySubmit bug reports and feature requests on the repository issue tracker.
Before submitting a pull request, please post an issue with the proposed changes for discussion prior to developing the pull request.