PyScanCf Example 1#

  • author: @syedhamidali

  • date: Apr 15, 2023

import pyscancf as pcf
import pyart
import glob
print(pcf.__version__)
## You are using the Python ARM Radar Toolkit (Py-ART), an open source
## library for working with weather radar data. Py-ART is partly
## supported by the U.S. Department of Energy as part of the Atmospheric
## Radiation Measurement (ARM) Climate Research Facility, an Office of
## Science user facility.
##
## If you use this software to prepare a publication, please cite:
##
##     JJ Helmus and SM Collis, JORS 2016, doi: 10.5334/jors.119
/opt/homebrew/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
## Cite PyScanCf:

## Syed, H. A.,Sayyed, I., Kalapureddy, M. C. R., & Grandhi, K. K.(2021).
## PyScanCf – The library for individual sweep datasets of IMD weather radars.
## Zenodo. doi:10.5281/zenodo.5574160.

1.0.26

Setup the paths for the input and output data, !ls $inp shows the raw IMD data files, this is how the B-type (short range - high resolution) IMD DWR data looks like.

inp = "/Users/syed44/Downloads/Git_Stuff/imd_temp_radar/B/"
out = "/Users/syed44/Downloads/Git_Stuff/imd_temp_radar/out/"
!ls $inp
GOA210516024101-IMD-B.nc   GOA210516030244-IMD-B.nc
GOA210516024101-IMD-B.nc.1 GOA210516030244-IMD-B.nc.1
GOA210516024101-IMD-B.nc.2 GOA210516030244-IMD-B.nc.2
GOA210516024101-IMD-B.nc.3 GOA210516030244-IMD-B.nc.3
GOA210516024101-IMD-B.nc.4 GOA210516030244-IMD-B.nc.4
GOA210516024101-IMD-B.nc.5 GOA210516030244-IMD-B.nc.5
GOA210516024101-IMD-B.nc.6 GOA210516030244-IMD-B.nc.6
GOA210516024101-IMD-B.nc.7 GOA210516030244-IMD-B.nc.7
GOA210516024101-IMD-B.nc.8 GOA210516030244-IMD-B.nc.8
GOA210516024101-IMD-B.nc.9 GOA210516030244-IMD-B.nc.9
help(pcf.cfrad)
Help on function cfrad in module pyscancf.pyscancf:

cfrad(input_dir, output_dir, scan_type='B', dualpol=False, gridder=False, plot=None, nf=None)
    Aggregates data to cfradial1 data.
    input_dir(str): Enter path of single sweep data directory,
    output_dir(str): Enter the path for output data,
    scan_type(str): "B", "C". B is for short range PPI,
                & C is for long range PPI.
    dualpol(bool): True, False. (If the data contains
                dual-pol products e.g., ZDR, RHOHV),
    gridder(bool): True, False,
    plot(str): 'REF', 'VELH', 'WIDTH', 'ALL',
    nf(int): Number of files to group together

Let’s see what we have got into pcf.cfrad() function.

  • It aggregates data to cfradial1 data. It takes inputs such as input_dir, output_dir, scan_type, dualpol, gridder, plot, and nf.

  • input_dir specifies the path of single sweep data directory, while output_dir specifies the path for output data.

  • scan_type takes two options: B for short-range PPI, and C for long-range PPI.

  • The dualpol parameter is set to True if the data contains dual-polarization products like ZDR and RHOHV.

  • gridder is a boolean parameter, which is set to True if the user wants to create a gridded output.

  • The plot argument is used to generate a cappi plot. It can be set to REF, VELH, WIDTH, or ALL. The names are not case-sensitive and will be taken care of by the plot_cappi() function. For example, if the data has a reflectivity field named DBZ, you can still write REF or reflectivity, and same is for other radar moments.

  • Lastly, nf is an integer parameter that specifies the number of files to group together, it is usually 10 for type B, and 2 or 3 for type C data.

pcf.cfrad(input_dir=inp, output_dir=out, scan_type="B", gridder=True)
Number of files:  20
Total number of files will be created:  2
Merging all scans in one file
Data merging done
Total Time Elapsed:  0:00:25.138077
!ls $out
Max-REF_GOA_20210516024104.png cfrad_GOA210516030244-IMD-B.nc
Max-REF_GOA_20210516030306.png grid_GOA210516024101-IMD-B.nc
cfrad_GOA210516024101-IMD-B.nc grid_GOA210516030244-IMD-B.nc
files = glob.glob(out+"grid*")
for file in files:
    grid = pyart.io.read_grid(file)
    pcf.plot_cappi(grid, "REF",
                   cmap="pyart_HomeyerRainbow", #optional
                   crosshair=False, #optional
                   savedir=None, #optional
                   show_figure=True, #optional
    )
...............................
Plotting Max-REF 20210516024104
...............................
...............................
Plotting Max-REF 20210516030306
...............................
../../../../../../../_images/10c645b1c3ce44a9616e10e5f2167af3d46986e632ab32f92543bd2d0b2f7d08.png ../../../../../../../_images/199034e640b49ab6dbe712181ea3147cdeffe8663e2d08b1c42405d509e8dada.png
for file in files:
    grid = pyart.io.read_grid(file)
    pcf.plot_cappi(grid, "REF",
                   cmap="pyart_HomeyerRainbow", #optional
                   crosshair=False, #optional
                   savedir=out, #optional
                   show_figure=False, #optional
    )
...............................
Plotting Max-REF 20210516024104
...............................
Figure(s) saved as /Users/syed44/Downloads/Git_Stuff/imd_temp_radar/out//Max-REF_GOA_20210516024104.png
...............................
Plotting Max-REF 20210516030306
...............................
Figure(s) saved as /Users/syed44/Downloads/Git_Stuff/imd_temp_radar/out//Max-REF_GOA_20210516030306.png