ecometab | R Documentation |
Estimate ecosystem metabolism using the Odum open-water method. Estimates of daily integrated gross production, total respiration, and net ecosystem metabolism are returned. A plotting method is also provided.
ecometab(dat_in, ...)
## Default S3 method:
ecometab(
dat_in,
tz,
DO_var = "DO_mgl",
depth_val = "Tide",
metab_units = "mmol",
bott_stat = FALSE,
depth_vec = NULL,
replacemet = TRUE,
instant = FALSE,
gasex = c("Thiebault", "Wanninkhof"),
gasave = c("instant", "daily", "all"),
...
)
## S3 method for class 'metab'
plot(
x,
by = "months",
metab_units = "mmol",
alpha = 0.05,
width = 10,
pretty = TRUE,
...
)
dat_in |
Input data frame which must include time series of dissolved oxygen (mg L-1), see |
... |
arguments passed to or from other methods |
tz |
chr string for timezone, e.g., 'America/Chicago', must match the time zone in |
DO_var |
chr string indicating the name of the column with the dissolved oxygen variable for estimating metabolism |
depth_val |
chr indicating the name of a column in the input data for estimating depth for volumetric integration. This column is typically the tidal height vector. Use |
metab_units |
chr indicating desired units of output for oxygen, either as mmol or grams |
bott_stat |
logical if air-sea gas exchange is removed from the estimate |
depth_vec |
numeric value for manual entry of station depth (m). Use a single value if the integration depth is constant or a vector of depth values equal in length to the time series. Leave |
replacemet |
logical indicating if missing values for appropriate weather variables are replaced by monthly/hourly means with |
instant |
logical indicating if the instantaneous data (e.g., 30 minutes observations) used to estimate the daily metabolic rates are returned, see details |
gasex |
chr indicating if gas exchange is estimated using equations in Thiebault et al. 2008 or Wanninkhof 2014 (see |
gasave |
chr indicating one of |
x |
input object to plot |
by |
chr string describing aggregation period, passed to |
alpha |
numeric indicating alpha level for confidence intervals in aggregated data. Use |
width |
numeric indicating width of top and bottom segments on error bars |
pretty |
logical indicating use of predefined plot aesthetics |
Input data include both water quality and weather time series, which are typically collected with independent instrument systems. This requires merging of the time series datasets. These include time series of dissolved oxygen, salinity, air and water temperature, barometric pressure, and wind speed (see SAPDC
for an example of the data structure for ecometab
).
The open-water method is a common approach to quantify net ecosystem metabolism using a mass balance equation that describes the change in dissolved oxygen over time from the balance between photosynthetic and respiration processes, corrected using an empirically constrained air-sea gas diffusion model (see Ro and Hunt 2006, Thebault et al. 2008). The diffusion-corrected DO flux estimates are averaged separately over each day and night of the time series. The nighttime average DO flux is used to estimate respiration rates, while the daytime DO flux is used to estimate net primary production. To generate daily integrated rates, respiration rates are assumed constant such that hourly night time DO flux rates are multiplied by 24. Similarly, the daytime DO flux rates are multiplied by the number of daylight hours, which varies with location and time of year, to yield net daytime primary production. Respiration rates are subtracted from daily net production estimates to yield gross production rates. The metabolic day is considered the 24 hour period between sunsets on two adjacent calendar days.
Areal rates for gross production and total respiration are based on volumetric rates normalized to the depth of the water column at the sampling location, which is assumed to be well-mixed, such that the DO sensor is reflecting the integrated processes in the entire water column (including the benthos). Water column depth is calculated as the mean value of the depth variable across the time series. Depth values are floored at one meter for very shallow stations and 0.5 meters is also added to reflect the practice of placing sensors slightly off of the bottom. Additionally, the air-sea gas exchange model is calibrated with wind data either collected at, or adjusted to, wind speed at 10 m above the surface. The metadata should be consulted for exact height. The value can be changed manually using a height
argument, which is passed to f_calcKL
.
A minimum of three records are required for both day and night periods to calculate daily metabolism estimates. Occasional missing values for air temperature, barometric pressure, and wind speed are replaced with the climatological means (hourly means by month) for the period of record using adjacent data within the same month as the missing data.
All DO calculations within the function are done using molar units (e.g., mmol O2 m-3).
The specific approach for estimating metabolism with the open-water method is described in Caffrey et al. 2013 and references cited therein.
The plotting method plots daily metabolism estimates using different aggregation periods. Accepted aggregation periods are 'years'
, 'quarters'
, 'months'
, 'weeks'
, and 'days'
(if no aggregation is preferred). The default function for aggregating is the mean
for the periods specified by the by
argument. Setting pretty = FALSE
will return the plot with minimal modifications to the ggplot
object.
A metab
object with daily integrated metabolism estimates including gross production (Pg, mmol O2 m-2 d-1), total respiration (Rt), and net ecosystem metabolism (NEM). Attributes of the object include the raw data (rawdat
), a character string indicating name of the tidal column if supplied in the raw data (depth_val
), and a character string indicating name of the dissolved oxygen column in the raw data that was used to estimate metabolism (DO_var
).
The plot method returns a ggplot
object which can be further modified.
If instant = TRUE
the instantaneous data (e.g., 30 minutes observations) used to estimate the daily metabolic rates are returned at the midpoint time steps from the raw time series. The instantaneous data will also return metabolism estimates as flux per day, including the DO flux (dDO, mmol d-1), air-sea exchange rate (D, mmol m-2 d-1), the volumetric reaeration coefficient (Ka, hr-1), the gas transfer coefficient (KL, m d-1), gross production (Pg, mmol O2 m-2 d-1), respiration (Rt, mmol O2 m-2 d-1), net ecosystem metabolism (mmol O2 m-2 d-1), volumetric gross production (Pg_vol, mmol O2 m-3 d-1), volumetric respiration (Rt_vol, mmol O2 m-3 d-1), and volumetric net ecosystem metabolism (mmol O2 m-3 d-1). If metab_units = "grams"
, the same variables are returned as grams of O2. To convert the daily instantaneous values to hourly estimates, just divide by 24 (except gross production, divide by day_hrs
).
Caffrey JM, Murrell MC, Amacker KS, Harper J, Phipps S, Woodrey M. 2013. Seasonal and inter-annual patterns in primary production, respiration and net ecosystem metabolism in 3 estuaries in the northeast Gulf of Mexico. Estuaries and Coasts. 37(1):222-241.
Odum HT. 1956. Primary production in flowing waters. Limnology and Oceanography. 1(2):102-117.
Ro KS, Hunt PG. 2006. A new unified equation for wind-driven surficial oxygen transfer into stationary water bodies. Transactions of the American Society of Agricultural and Biological Engineers. 49(5):1615-1622.
Thebault J, Schraga TS, Cloern JE, Dunlavey EG. 2008. Primary production and carrying capacity of former salt ponds after reconnection to San Francisco Bay. Wetlands. 28(3):841-851.
f_calcKL
for estimating the oxygen mass transfer coefficient used with the air-sea gas exchange model and met_day_fun
for identifying the metabolic day for each observation in the time series
## Not run:
data(SAPDC)
# metadata for the location
tz <- 'America/Jamaica'
lat <- 31.39
long <- -81.28
# estimate ecosystem metabolism using observed DO time series
metab <- ecometab(SAPDC, DO_var = 'DO_obs', tz = tz,
lat = lat, long = long)
## plot
plot(metab)
## change alpha, aggregation period, widths
plot(metab, by = 'quarters', alpha = 0.1, widths = 0)
## plot daily raw, no aesthetics
plot(metab, by = 'days', pretty = FALSE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.