meridionaljet / py3grads

Python 3 Interface to GrADS
29 stars 10 forks source link

Py3GrADS is a Python module providing an interface to the GrADS meteorological plotting program. This interface is independent from but inspired by Arlindo da Silva's work on PyGrADS. As of this writing, PyGrADS doesn't support Python 3, and Py3GrADS was developed to fill this hole. Py3GrADS lacks some of the deeper features of PyGrADS, but has some unique functionality of its own as well.


   DEPENDENCIES

Py3GrADS requires NumPy and a working GrADS installation. Py3GrADS has only been tested with GrADS v2.1.a3 and v2.1.0.


   INSTALLATION

pip install py3grads or uv pip install py3grads


       USAGE

The primary purpose of Py3GrADS is to pass commands directly to an instance of GrADS from within a Python script. To this end, this module centers around a GrADS object, which can be initialized like this:

from py3grads import Grads ga = Grads(verbose=False)

Then GrADS commands can be passed as strings to this object:

ga('open mslp.ctl') out, rc = ga('query file')

Note that the output and return code can be extracted from any GrADS command.

Py3GrADS has built-in methods for easily analyzing the GrADS dimension environment:

env = ga.env() if not env.xfixed: print('Current longitude range: {0}-{1}'.format(env.lon[0], env.lon[1])) print('Number of grid points in the x-direction: '+str(env.nx)) print('Time set to: '+str(env.time))

This makes GrADS scripting much easier for many tasks.

In addition, Py3GrADS can extract grids directly into NumPy arrays:

ga('define mslp = prmslmsl/100') mslp = ga.exp('mslp') lons = ga.exp('lon') lats = ga.exp('lat') from matplotlib import pyplot as plt plt.contourf(lons, lats, mslp)