Skip to main content

An easy to use ISTP loader package.

Project description

https://img.shields.io/pypi/v/pyistp.svg Documentation Status

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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyistp-0.8.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyistp-0.8.1-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file pyistp-0.8.1.tar.gz.

File metadata

  • Download URL: pyistp-0.8.1.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

Hashes for pyistp-0.8.1.tar.gz
Algorithm Hash digest
SHA256 f93f767245699e3bfeccb6d6c61687c1d02e609382d1b1ceb5c5a542085a70e7
MD5 5fd02c29ace75aab146a3ad918d77bf6
BLAKE2b-256 fcabee9a4a8bd6b5fcd9da8afb81dfc2f82bc099414d0f8fe0b6ac011c882fd0

See more details on using hashes here.

File details

Details for the file pyistp-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: pyistp-0.8.1-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

Hashes for pyistp-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c2dfb1dc79c936362f0cf3bcd5dfe5b9d3d8b8f93c4ffeeccf83964b15c53891
MD5 dd47097d98b4f55861429472002c0773
BLAKE2b-256 d59e6c466a8f838a732c9e0adf3885ef12247b474010d9a65d791420ede13cce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page