rstool

Command-line program for converting native radiosonde data to NetCDF and calculation of derived quantities, supporting InterMet Systems (iMet) and Windsond radiosondes


Keywords
radiosonde, netcdf, atmospheric-science
License
MIT
Install
pip install rstool==1.1.0

Documentation

rstool

rstool is an open source command-line program for reading and converting native radiosonde data to NetCDF and calculation of derived physical quantities.

Supported instruments:

  • InterMet Systems (iMet) radiosondes such as iMet-1-ABxn, data files produced by the iMetOS-II software (.dat).
  • Windsond, data files produced by the Windsond software (.sounding).

Support for other instruments can be added by writing a Python module in rstoollib/drivers to read the data files produced by the radiosonde (see the template in rstoollib/drivers/template.py).

Usage

rstool <input_type> <output_type> <input> [<surface>] <output>

rstool converts native radiosonde data to NetCDF raw, points (pts) and profile (prof) datasets and calculates derived profile variables.

Arguments:

  • input_type - See Input types below.
  • output_type - See Output types below.
  • input - Input file or directory.
  • surface - Near-surface variables (NetCDF).
  • output - Output file (NetCDF).

Input types:

  • imet - InterMet Systems iMet-1-ABxn. input should be the directory generated by the iMetOS-II software.
  • prof - Profile (prof) dataset.
  • pts - Collection of measurement points (NetCDF). The output of running rstool with the output type pts.
  • raw:<instrument> - "Raw" instrument-dependent format (NetCDF). instrument is one of imet, ws.
  • ws - Windsond. input should be the .sounding file generated by the Windsond software.

Output types:

  • pts - Collection of measurement points (NetCDF).
  • prof - Vertical profile calculated by interpolating the measurement points during the ascent of the radiosonde as a function of height (NetCDF).
  • prof:desc - The same as prof, but for the descent.
  • raw - "Raw" instrument-dependent format (NetCDF).

The following input/output type combinations are supported:

  • <instrument> raw - native instrument to instrument-dependent raw (NetCDF)
  • <instrument> pts - native instrument to points
  • <instrument> prof - native instrument to profile
  • <instrument> prof:desc - native instrument to descending profile
  • raw:<instrument> pts - instrument raw (NetCDF) to points
  • raw:<instrument> prof - instrument raw (NetCDF) to profile
  • raw:<instrument> prof:desc - instrument raw (NetCDF) to descending profile
  • pts prof - points to profile
  • pts prof:desc - points to descending profile
  • prof prof - profile to profile (with derived variables)

where instrument is one of: imet, ws.

Examples

Convert Windsond sounding 2000-01-01_0000.sounding to profile:

rstool ws prof 2000-01-01_0000.sounding 2000-01-01_0000.prof.nc

Convert iMet sounding in the directory 2000-01-01_0000 to profile:

rstool imet prof 2000-01-01_0000 2000-01-01_0000.prof.nc

Convert Windond sounding 2000-01-01_0000.sounding to Windsond raw:

rstool ws raw 2000-01-01_0000.sounding 2000-01-01_0000.raw.nc

Convert iMet sounding in directory 2000-01-01_0000 to points:

rstool imet pts 2000-01-01_0000 2000-01-01_0000.pts.nc

Convert Windsond raw to points:

rstool raw:ws pts 2000-01-01_0000.raw.nc 2000-01-01_0000.pts.nc

Convert points to profile:

rstool pts prof 2000-01-01_0000.pts.nc 2000-01-01_0000.prof.nc

Installation

Recommended operating system to run rstool is Linux with Python 3 and pipx.

Install with:

pipx install rstool

Note: Make sure the directory ~/.local/bin is included in the environmental variable PATH.

Run with:

rstool

in the command line.

Format description

Below is a description of the output NetCDF formats. Whenever possible, CF Conventions and CMIP5 standard names are loosely followed by "duck typing". Time is expressed as Julian date (fractional number of days since -4712-01-01 12:00 UTC, or -4713-11-24 12:00 UTC in the proleptic Gregorian calendar). This can be converted to UNIX time (number of non-leap seconds since 1 January 1970 00:00 UTC) as (time - 2440587.5)*86400.

The formats can be converted in the order raw (raw:<instrument>) → points (pts) → profile (prof).

All variables are stored either as 64-bit floating point (float64) or 64-bit integer (int64). Missing values are stored as NaN in float64 and -9223372036854775806 in int64.

Points (pts)

pts is an instrument-independent format containing a sequence of radiosonde measurements as received by the base station ordered by time, converted to a standard set of variables.

Variable Description Units Type
hur relative humidity % float64
hurs near-surface relative humidity % float64
lat latitude degrees North float64
lon longitude degrees East float64
p pressure Pa float64
ps surface air pressure Pa float64
ta air temperature K float64
tas near-surface air temperature K float64
time time days since -4713-11-24 12:00 UTC (proleptic_gregorian calendar) float64
station_lat station latitude degrees North float64
station_lon station longitude degrees East float64
station_z station altitude m float64
uas eastward near-surface wind m.s-1 float64
vas northward near-surface wind m.s-1 float64
z altitude m float64

Profile (prof)

prof is an instrument-independent format containing standard variables interpolated as a function of height. Profiles are calculated by averaging points (pts) on a regular vertical pressure grid. For calculation of an ascending profile (default), only strictly increasing subset of points is considered. For a descending profile (prof:desc), only strictly decreasing subset of points is considered. Vertical intervals with no points are filled with missing values. It is therefore possible to identify vertical intervals where no radiosonde data were received, and optionally interpolate (linearly or in some other way) across these intervals when plotting.

Variable Description Units Type
bvf Brunt–Väisälä frequency in air s-1 float64
e water vapor pressure in air Pa float64
es saturation vapor pressure Pa float64
hur relative humidity % float64
hurs near-surface relative humidity % float64
lat latitude degrees North float64
lon longitude degrees East float64
p pressure Pa float64
p2 pressure Pa float64
p_lcl atmosphere lifting condensation level pressure Pa float64
ps surface air pressure Pa float64
station_lat station latitude degrees North float64
station_lon station longitude degrees East float64
station_z station altitude m float64
ta air temperature K float64
ta_par dry parcel temperature K float64
ta_par_s saturated parcel temperature K float64
ta_surf_par dry surface parcel temperature K float64
ta_surf_par_s saturated surface parcel temperature K float64
tas near-surface air temperature K float64
theta air potential temperature K float64
time time days since -4713-11-24 12:00 UTC (proleptic_gregorian calendar) float64
ts surface temperature K float64
ua eastward wind m.s-1 float64
uas eastward near-surface wind speed m.s-1 float64
va northward wind m.s-1 float64
vas northward near-surface wind speed m.s-1 float64
wdd wind from direction degrees float64
wdds near-surface wind from direction degrees float64
wds wind speed m.s-1 float64
wdss near-surface wind speed m.s-1 float64
z altitude m float64
zg geopotential height m float64
zg_lcl lifting condensation level geopotential height m float64

Surface (surf)

surf dataset specifies near-surface variables which can be used as an optional input to rstool. These can come from a co-located automatic weather station (AWS). Some native radiosonde data can already contain same of these variables (iMet). Near-surface variables are needed to calculate some derived profile variables such as the lifting condensation level. All variables must have a single dimension time. The point nearest to the radiosonde launch time is picked. If no points are within 1 hour of the radiosonde launch, the surface input is ignored. Either (uas, vas) or (wdds, wdss) can be defined. Either hurs or (ps, tas, tds) can be defined.

Variable Description Units Type
time time days since -4713-11-24 12:00 UTC (proleptic_gregorian calendar) float64
hurs near-surface relative humidity % float64
ps surface air pressure Pa float64
tas near-surface air temperature K float64
tds near-surface dew point temperature K float64
ts surface temperature K float64
uas eastward near-surface wind speed m.s-1 float64
vas northward near-surface wind speed m.s-1 float64
wdds near-surface wind from direction degrees float64
wdss near-surface wind speed m.s-1 float64

iMet raw (raw:imet)

raw:imet is a raw instrument format of the InterMet radiosonde converted to NetCDF by reading the .dat file.

Variable Description Units Type
alt altitude m float64
date_time date time year/month/day hour:minute:second string
f_offs frequency offset Hz float64
freq frequency Hz float64
hum relative humidity % float64
hurs near-surface relative humidity % float64
lat latitude degrees North float64
long longitude degrees East float64
press pressure Pa float64
ps surface air pressure Pa float64
sample sample number 1 int64
station_lat station latitude degrees North float64
station_lon station longitude degrees East float64
station_z station altitude m float64
tair air temperature K float64
tas near-surface air temperature K float64
uas eastward near-surface wind speed m.s-1 float64
vas northward near-surface wind speed m.s-1 float64

Windsond raw (raw:ws)

raw:ws is a raw instrument format of the Windsond radiosonde converted to NetCDF by reading the .sounding file.

Variable Description Units Type Comment
afc automatic frequency control Hz int64
afc1 automatic frequency control 1 Hz int64
afc2 automatic frequency control 2 Hz int64
alt GPS altitude m int64
ang wind direction degrees float64
ang<n> wind direction (old) degrees float64
behlan behavior after landing 1 int64 0: power-save, 1: beacon at once
burn burn string 1 int64 0: at cut down
crc cyclic redundancy check (CRC) 1 int64
cutalt cut dow altitude m int64
extra extra information string
fwver firmware version 1 float64
galt altitude m int64
gpa ground pressure Pa int
hdop GPS horizontal dilution of precision (HDOP) float64
hu relative humidity % float64
hu<n> relative humidity (old) % float64
hw hw 1 int64
id sond ID 1 int64
install install string
label label string
lat latitude degrees North float64
lon longitude degrees East float64
lux light lux int64
mcnt message counter 1 int64
md mode 1 int64 0: init, 1: ready for launch, 2: rising, 3: falling, 4: on ground, silent, 5: on ground, beeping, 6: on ground, sometimes beeping, 7: cutting down
new GPS validity 1 int64 0: GPS is old
node_id node ID 1 int64
offset time start seconds since 1970-01-01T00:00 float64
pa air pressure Pa int64
pwr power W float64
q quality 1 int64
q0 quality 1 int64
q1 quality 1 int64
qu quality % float64
r quality 1 int64
rec correction 1 int64
rec correction (old) 1 int64
relAP release altitude m int64
role role 1 int64
sats number of GPS satellites 1 int64
seq sequence number 1 int64
sid session ID 1 int64
software software version string
spd wind speed m.s-1 float64
spd<n> wind speed (old) m.s-1 float64
su power supply V float64
syn 1 int64
te temperature K float64
te<n> temperature (old) K float64
tei internal temperature K float64
timezone timezone 1 int64
ucnt ucnt 1 int64
version version 1 int64

Attributes

rstool writes the following attributes in the raw (raw:<instrument>), points (pts) and profile (prof) NetCDF files.

Attribute Description Comment
created date created year-month-dayThour:minute:second
software software identification rstool x.y.z (https://github.com/peterkuma/rstool)

In addition, the following attributes may be available in raw, pts and prof datasets depending on the instrument:

Attribute Description
station station information
balloon balloon information
sonde sonde information
operator operator name

License

This software can be used, modified and distributed freely under the terms of an MIT license (see LICENSE.md).

Releases

1.1.0 (2023-11-17)

  • Fixed a bool type error due to a removal of the type from the numpy package.
  • Improvements in the processing of surface variables.
  • Latitude-dependent gravitational acceleration calculation.
  • Destination variables are now only set if not existing already in prof to prof conversion.
  • More accurate calculation of relative humidity from specific humidity.
  • Fixed missing calendar attribute in the time variable of prof output.
  • Fixes and improvements in the documentation.

1.0.0 (2021-12-11)

  • Changed calendar to proleptic Gregorian.
  • Added standard_name attributes.

0.1.1 (2020-08-14)

  • Fixed missing surf module.
  • Installation of the script via setuptools entry points.

0.1.0 (2020-08-12)

  • Initial beta release.

See also

ALCF, ccplot, cl2nc, mpl2nc, mrr2c