Skip to main content

pyshadoz is a pure Python package to read and write NASA Southern Hemisphere ADditional OZonesondes (SHADOZ) data

Project description

pyshadoz

Build Status

Overview

pyshadoz is a pure Python package to read and write NASA Southern Hemisphere ADditional OZonesondes (SHADOZ) data.

Versions 5 and 6 are supported.

Installation

The easiest way to install pyshadoz is via the Python pip utility:

pip3 install pyshadoz

Requirements

Dependencies

Dependencies are listed in pyproject.toml. Dependencies are automatically installed during pyshadoz installation.

Installing pyshadoz

# setup virtualenv
virtualenv --system-site-packages -p python3 pyshadoz
cd pyshadoz
source bin/activate

# clone codebase and install
git clone https://github.com/wmo-cop/pyshadoz.git
cd pyshadoz
pip3 install .

Running

# help
pyshadoz --help

# get version
pyshadoz --version

# parse a single shadoz file
pyshadoz -f </path/to/shadoz_file>

# add verbose mode
pyshadoz -v -f </path/to/shadoz_file>

# parse a directory of shadoz files
pyshadoz -d </path/to/directory>

# parse a directory of shadoz files recursively
pyshadoz -r -d </path/to/directory>

Using the API

from pyshadoz import SHADOZ

# read SHADOZ data
with open('/path/to/directory') as ff:
    s = SHADOZ(ff)

    for key, value in s.metadata:
        print(key, value)

    print(s.data_fields)
    print(s.data_fields_units)
    print(len(s.data))

    # get index of a data field
    index = s.get_data_index('W Dir')

    # get index of a data field and data field unit
    index = s.get_data_index('W Dir', 'deg')

    # get all data
    data = s.get_data()

    # get data by index
    data = s.get_data(by_index=index)

    # get all data by field
    data = s.get_data('W Spd')

    # get all data by field and unit
    data = s.get_data('O3', 'ppmv')

# read SHADOZ data using convenience functions
# parse file
s = load('/path/to/shadoz_file.dat')  # returns SHADOZ object

# parse string
with open('/path/to/shadoz_file.dat') as ff:
    shadoz_string = ff.read()
s = loads(shadoz_string)  # returns SHADOZ object

# write SHADOZ data
s = SHADOZ()
# build metadata dict
s.metadata['NASA/GSFC/SHADOZ Archive'] = 'http://croc.gsfc.nasa.gov/shadoz'
....
# build data fields
s.data_fields = ['Time', 'Press', 'Alt', 'Temp', 'RH', 'O3', 'O3', 'O3',
                 'W Dir', 'W Spd', 'T Pump', 'I O3', 'GPSLon', 'GPSLat',
                 'GPSAlt']

# build data field units
s.data_fields_units = ['sec','hPa','km', 'C', '%', 'mPa', 'ppmv', 'du', 'deg',
                       'm/s', 'C', 'uA', 'deg', 'deg', 'km']

# build data
s.data = [
    [0, 1013.85, 0.01, 24.22, 71.0, 32.91, 32.91, 0.0, 32.91, 5.29, 32.91, 9000.0, -155.049, 19.717, 0.041],
    [0, 1013.66, 0.012, 23.89, 70.0, 32.79, 32.79, 0.049, 32.79, 5.01, 32.79, 9000.0, -155.049, 19.717, 0.045]
]

# serialize data to file
shadoz_data = s.write()
with open('new_shadoz_file.dat', 'w') as ff:
    ff.write(shadoz_data)

Development

Running Tests

python3 pyshadoz/tests/run_tests.py

Releasing

# create release (x.y.z is the release version)
vi pyproject.toml  # update [project]/version
git commit -am 'update release version x.y.z'
git push origin main
git tag -a x.y.z -m 'tagging release version x.y.z'
git push --tags

# upload to PyPI
rm -fr build dist *.egg-info
python3 -m build
twine upload dist/*

# publish release on GitHub (https://github.com/wmo-cop/pyshadoz/releases/new)

# bump version back to dev
vi pyproject.toml  # update [project]/version
git commit -am 'back to dev'
git push origin main

Code Conventions

Bugs and Issues

All bugs, enhancements and issues are managed on GitHub.

Contact

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

pyshadoz-0.2.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

pyshadoz-0.2.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file pyshadoz-0.2.0.tar.gz.

File metadata

  • Download URL: pyshadoz-0.2.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pyshadoz-0.2.0.tar.gz
Algorithm Hash digest
SHA256 03c7f850c3f65c10b720c3a6a3f17740aacfb6df9fa4d084942cc28a8ba52490
MD5 0bdbb611d5cc423fc0de76f88f9794a5
BLAKE2b-256 6a23fa38b67af717806a2e432f74ad5f399f38f4f2e44a6fed853bdc6aa88e78

See more details on using hashes here.

File details

Details for the file pyshadoz-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyshadoz-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pyshadoz-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 74b493217e22e26d7ba4cd1f5129756e993ae1dbc7bfa18c42e924795e911743
MD5 bd8955979e821647826fe595d8ec43a1
BLAKE2b-256 9ba86e4fac70b70d2047063545829abe8578addc20f8a915ef165bc84a34f65a

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