An easy to use ISTP loader package.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyistp-0.8.0.tar.gz.
File metadata
- Download URL: pyistp-0.8.0.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07624f54da5bdc0dbe59b3c7c2960c23917c00d03b3bdaf778379e8f71696a79
|
|
| MD5 |
a69c5fb37b0f68a4c942cb7b76de993c
|
|
| BLAKE2b-256 |
4ff9a38e4e8991616c38079d6d775ea7c7926faef06e1544a410358e6f4d4eac
|
File details
Details for the file pyistp-0.8.0-py3-none-any.whl.
File metadata
- Download URL: pyistp-0.8.0-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf0dcbaeabe85b26d5e5b8b50f3c30bdf222aa34bcfd4f0b6b941c7b1bb31b83
|
|
| MD5 |
b78f93fab4b1ef3a9ce89fec363f24ba
|
|
| BLAKE2b-256 |
4d8760c0418ec2f36f59164907c3161d0338069fd43b02e812c8d4a183ccf818
|