Skip to main content

Parse and read ctl file commonly used by GrADS.

Project description

xgrads

DOI GitHub Documentation Status PyPI version Publish to PyPI pytest Build Status

3D plot

1. Introduction

The Grid Analysis and Display System (GrADS or OpenGrADS) is a widely used software for easy access, manipulation, and visualization of earth science data. It uses a descriptor (or control) file with a suffix .ctl to describe a raw binary 4D dataset. The ctl file is similar to the header information of a NetCDF file, containing all the information about dimensions, attributes, and variables except for the variable data.

This python package xgrads is designed for parse and read the .ctl file commonly used by GrADS. Right now it can parse various kinds of .ctl files. However, only the commonly used raw binary 4D datasets can be read using dask and return as a xarray.Dataset Other types of binary data, like dtype is station orgrib, may be supported in the future.


2. How to install

Requirements xgrads is developed under the environment with xarray (=version 0.15.0), dask (=version 2.11.0), numpy (=version 1.15.4), cartopy (=version 0.17.0), and pyproj (=version 1.9.6). Older versions of these packages are not well tested.

Install via pip

pip install xgrads

Install from github

git clone https://github.com/miniufo/xgrads.git
cd xgrads
python setup.py install

3. Examples

3.1 Parse a .ctl file

Parsing a .ctl file is pretty simple using the following code:

from xgrads import CtlDescriptor

ctl = CtlDescriptor(file='test.ctl')

# print all the info in ctl file
print(ctl)

If you have already load the ASCII content in the .ctl file, you can do it as:

content = \
    "dset ^binary.dat\n" \
    "* this is a comment line\n" \
    "title 10-deg resolution model\n" \
    "undef -9.99e8\n" \
    "xdef 36 linear   0 10\n" \
    "ydef 19 linear -90 10\n" \
    "zdef  1 linear   0  1\n" \
    "tdef  1 linear 00z01Jan2000 1dy\n" \
    "vars  1\n" \
    "test  1 99 test variable\n" \
    "endvars\n"

ctl = CtlDescriptor(content=content)

# print all the info
print(ctl)

3.2 Read binary data into a xarray.Dataset

Reading a .ctl related binary data file is also pretty simple using the following code:

from xgrads import open_CtlDataset

dset = open_CtlDataset('test.ctl')

# print all the info in ctl file
print(dset)

Then you have the dset as a xarray.Dataset. This is similar to xarray.open_dataset that use dask to chunk (buffer) parts of the whole dataset in physical memory if the whole dataset is too large to fit in.

If there are many .ctl files in a folder, we can also open all of them in a single call of open_mfdataset as:

from xgrads import open_mfDataset

dset = open_mfDataset('./folder/*.ctl')

# print all the info in ctl file
print(dset)

assuming that every .ctl file has similar data structure except the time step is different. This is similar to xarray.open_mfdataset.


3.3 Convert a GrADS dataset to a NetCDF dataset

With the above functionality, it is easy to convert a .ctl (GrADS) dataset to a .nc (NetCDF) dataset:

from xgrads import open_CtlDataset

open_CtlDataset('input.ctl').to_netcdf('output.nc')

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

xgrads-0.2.6.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

xgrads-0.2.6-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file xgrads-0.2.6.tar.gz.

File metadata

  • Download URL: xgrads-0.2.6.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for xgrads-0.2.6.tar.gz
Algorithm Hash digest
SHA256 d354bd5c69fbd05bcbbd34ac15d589a6592305dfd1769addd4a0cfeba04d4d97
MD5 b04bc32c61038b59f3ab7461eea4d0e9
BLAKE2b-256 59d96193bb4266d885a571ca7396deb1fc404aa2019a7642087ba56f134c1f39

See more details on using hashes here.

File details

Details for the file xgrads-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: xgrads-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for xgrads-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 3e7dbef1a1ae64efd9963164371d839f014277a3261aa44cdfb56f67af829646
MD5 b538e7ce98addb7c3fd1131fb57f78c3
BLAKE2b-256 34107ad041840cc200e7fd9c96ef660e4d0a21c092e5325809726bb247046a91

See more details on using hashes here.

Supported by

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