Python ISTP loader
An easy to use loader for ISTP-compliant CDF and NetCDF files, as commonly distributed by CDAWeb, AMDA and other space-physics data archives.
Rather than exposing raw variables, PyISTP reads the ISTP metadata conventions (VAR_TYPE, DEPEND_n, *_PTR, LABLAXIS, …) and hands you each data variable together with its resolved axes (time and other support variables), labels and attributes.
Free software: GNU General Public License v3
Documentation: https://pyistp.readthedocs.io.
Features
Loads ISTP-compliant CDF files (via pycdfpp by default, or spacepy).
Loads ISTP-compliant NetCDF files (via netCDF4).
Reads from a file path or directly from an in-memory bytes buffer (handy for data fetched over HTTP).
Supports a separate master/skeleton file holding the metadata while the values come from the data file.
Automatically resolves DEPEND_n support variables into axes, with fallback to the master file.
Converts CDF epoch types and NetCDF CF/Unix time variables to numpy.datetime64[ns].
Lazily materializes variable values (the array is read on first access).
Tolerates many non-ISTP-compliant files (CDAWeb, Cluster/CSA) with warnings rather than failures.
Installation
pip install pyistp
The default CDF backend is pycdfpp; spacepy is used as a fallback if available. NetCDF support requires netCDF4. To force a specific CDF backend, set the PYISTP_CDFLIB environment variable to pycdfpp or spacepy.
Usage
Load a file and inspect its data variables:
import pyistp
istp = pyistp.load(file="wi_k0_mfi_20220101_v01.cdf")
istp.data_variables() # -> ['BGSEc', 'BF1', 'PGSM', ...]
istp.attributes() # global attribute names
var = istp.data_variable("BGSEc")
var.values # numpy array of values (read lazily)
var.axes[0].values # the time axis (numpy.datetime64[ns])
var.attributes # variable attributes
var.labels # component labels, if any
Load directly from a buffer, for instance data fetched over HTTP:
import requests, pyistp
raw = requests.get(
"https://spdf.gsfc.nasa.gov/pub/data/themis/thc/l2/efi/2020/"
"thc_l2_efi_20200101_v01.cdf").content
istp = pyistp.load(buffer=raw)
var = istp.data_variable("thc_eff_dot0_gsm")
import matplotlib.pyplot as plt
plt.plot(var.axes[0].values, var.values)
Use a separate master/skeleton file for the metadata:
istp = pyistp.load(file="data.cdf", master_file="skeleton.cdf")
# or from buffers:
istp = pyistp.load(buffer=data_bytes, master_buffer=skeleton_bytes)
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
Metadata
Release files for pyistp 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyistp-0.9.1.tar.gz | 12.0 kB | Without provenance | Details for pyistp-0.9.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyistp-0.9.1-py3-none-any.whl | Python 3 | none | any | Details for pyistp-0.9.1-py3-none-any.whl |
Total release size: 26.4 kB
Release files / pyistp-0.9.1.tar.gz
| Download URL | pyistp-0.9.1.tar.gz |
|---|---|
| Size | 12.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
90ef2e51a464fd3f52c8d653b30f13cc40e6dddf99926e4fd72d61f7fa88bbde
|
|
BLAKE2b-256 checksum How to use checksums |
7416fb7b98e995fb6ea29f72bb2e62befd3e40eda21be0369d62c46819df041a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.21
|
Release files / pyistp-0.9.1-py3-none-any.whl
| Download URL | pyistp-0.9.1-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eadbaa10df630c4b2152d16ed429a0ff87962f937adbe0f33c9bb6ff35a4bf99
|
|
BLAKE2b-256 checksum How to use checksums |
0753ca22270b5a13eb27804f6fd6ad333f08f87ff823bb8f7a56f3f0cfc71898
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.21
|
Security for pyistp 0.9.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.