Learn R Programming

bioRad (version 0.4.0)

calculate_vp: Calculate a vertical profile (vp) from a polar volume (pvol)

Description

Calculates a vertical profile of biological scatterers (vp) from a polar volume (pvol) using the algorithm vol2bird (Dokter et al. 2011).

Usage

calculate_vp(pvolfile, vpfile = "", pvolfile_out = "",
  autoconf = FALSE, verbose = FALSE, mount = dirname(pvolfile),
  sd_vvp_threshold = 2, rcs = 11, dual_pol = FALSE, rho_hv = 0.95,
  elev_min = 0, elev_max = 90, azim_min = 0, azim_max = 360,
  range_min = 5000, range_max = 25000, n_layer = 20L,
  h_layer = 200, dealias = TRUE, nyquist_min = if (dealias) 5 else
  25, dbz_quantity = "DBZH")

Arguments

pvolfile

A radar file containing a radar polar volume, either in ODIM format, which is the implementation of the OPERA data information model in HDF5 format, or a format supported by the RSL library.

vpfile

character. Filename for the vertical profile to be generated in ODIM HDF5 format (optional).

pvolfile_out

character. Filename for the polar volume to be generated in ODIM HDF5 format (optional, e.g. for converting RSL formats to ODIM).

autoconf

logical. When TRUE, default optimal configuration settings are selected automatically, and other user settings are ignored.

verbose

logical. When TRUE, pipe Docker stdout to R console. On Windows always TRUE.

mount

character. String with the mount point (a directory path) for the Docker container.

sd_vvp_threshold

numeric. Lower threshold in radial velocity standard deviation (profile quantity sd_vvp) in m/s. Biological signals with sd_vvp < sd_vvp_threshold are set to zero.

rcs

numeric. Radar cross section per bird in cm^2.

dual_pol

logical. When TRUE use dual-pol mode, in which meteorological echoes are filtered using the correlation coefficient rho_hv. When FALSE use single polarization mode based only on reflectivity and radial velocity quantities.

rho_hv

numeric. Lower threshold in correlation coefficient used to filter meteorological scattering.

elev_min

numeric. Minimum scan elevation in degrees.

elev_max

numeric. Maximum scan elevation in degrees.

azim_min

numeric. Minimum azimuth in degrees clockwise from north.

azim_max

numeric. Maximum azimuth in degrees clockwise from north.

range_min

numeric. Minimum range in km.

range_max

numeric. Maximum range in km.

n_layer

numeric. Number of altitude layers in the profile.

h_layer

numeric. Width of altitude layers in meter.

dealias

logical. Whether to dealias radial velocities; this should typically be done when the scans in the polar volume have low Nyquist velocities (below 25 m/s).

nyquist_min

numeric. Minimum Nyquist velocity of scans in m/s for scans to be included in the analysis.

dbz_quantity

character. One of the available reflectivity factor quantities in the ODIM radar data format, e.g. DBZH, DBZV, TH, TV.

Value

A vertical profile object of class vp. When defined, output files vpfile and pvolfile_out are saved to disk.

Details

Requires a running Docker daemon.

Common arguments set by users are pvolfile, vpfile, autoconf and mount.

Turn on autoconf to automatically select the optimal parameters for a given radar file. The default for C-band data is to apply rain-filtering in single polarization mode, as well as dual polarization mode when available.

The default for S-band data is to apply precipitation filtering in dual-polarization mode.

Arguments that sometimes require non-default values are: rcs, sd_vvp_threshold, range_max, dual_pol, dealias.

Other arguments are typically left at their defaults.

azim_min and azim_max only affects reflectivity-derived estimates in the profile (DBZH,eta,dens), not radial-velocity derived estimates (u, v, w, ff, dd, sd_vvp), which are estimated on all azimuths at all times. azim_min, azim_max may be set to exclude an angular sector with high ground clutter.

range_max may be extended up to 40,000 m for volumes with low elevations only, in order to extend coverage to higher altitudes.

For altitude layers with a VVP-retrieved radial velocity standard deviation value below the threshold sd_vvp_threshold, the bird density dens is set to zero (see vertical profile vp class). This threshold might be dependent on radar processing settings. Results from validation campaigns so far indicate that 2 m/s is the best choice for this parameter for most weather radars. The algorithm has been tested and developed for altitude layers with h_layer = 200 m. Smaller widths are not recommended as they may cause instabilities of the volume velocity profiling (VVP) and dealiasing routines, and effectively lead to pseudo-replicated altitude data, since altitudinal patterns smaller than the beam width cannot be resolved.

The default radar cross section (11 cm^2) corresponds to the average value found by Dokter et al. in a calibration campaign of a full migration autumn season in western Europe at C-band. It's value may depend on radar wavelength. rcs will scale approximately \(M^{2/3}\) with M the bird's mass.

Using default values of range_min and range_max is recommended. Ranges closer than 5 km tend to be contaminated by ground clutter, while range gates beyond 25 km become too wide to resolve the default altitude layer width of 200 meter (see beam_width).

For dealiasing, the torus mapping method by Haase et al. is used.

At S-band (radar wavelength ~ 10 cm), currently only dual_pol=TRUE mode is recommended.

On repeated calls of calculate_vp, the Docker container mount can be recycled from one call to the next if subsequent calls share the same mount argument. Re-mounting a Docker container takes time, therefore it is advised to choose a mountpoint that is a parent directory of all volume files to be processed, such that calculate_vp calls are as fast as possible.

References

  • Haase, G. and Landelius, T., 2004. Dealiasing of Doppler radar velocities using a torus mapping. Journal of Atmospheric and Oceanic Technology, 21(10), pp.1566-1573.

  • Bird migration flight altitudes studied by a network of operational weather radars, Dokter et al., J. R. Soc. Interface 8 (54), pp. 30--43, 2011. https://doi.org/10.1098/rsif.2010.0116

Examples

Run this code
# NOT RUN {
# locate example polar volume file:
pvolfile <- system.file("extdata", "volume.h5", package = "bioRad")

# copy to a home directory with read/write permissions:
file.copy(pvolfile, "~/volume.h5")

# calculate the profile:
# }
# NOT RUN {
profile <- calculate_vp("~/volume.h5")
# }
# NOT RUN {
# clean up:
file.remove("~/volume.h5")
# }

Run the code above in your browser using DataLab