1 Introduction

Extracellular enzymes produced by microorganisms play an important role in driving ecosystem processes and biogeochemical cycles. Extracellular enzyme assays were developed as methods to quantify enzymatic activity and further probe the interactions between microbes and organic matter. Fluorometric assays, which involve the detection of a fluorophore enzymatically cleaved from a substrate, are particularly popular due to their inexpensiveness, efficiency, and accessability. The fluorescence of a sample ideally increases with respect to time, and can be convereted to fluorophore production as a result of enzymatic hydrolysis. Although fluorometric assays are relatively simple in practice, several parameters can hinder the ability to measure activity values accurately. These parameters include

  1. Adsorption of the fluorophore to solid surfaces,
  2. Quenching of the fluorophore by dissolved compounds,
  3. Abiotic release of the fluorophore from the substrate, and
  4. Pre-existing background fluorescence

German et al. (2011) identified the importance of using standardized data collection and analysis protocols in order for measurements to be intercomparable. However, the protocol that German and colleagues identified has not been universally accepted among practitioners. Other approaches differ in regard to how quenching is corrected and activity is calculated (e.g., Steen et al, 2019). As a reliable platform to compare and run different protocols, ezmmek aims to stimulate further discussion about how to best optimize extracellular enzyme assays.


1.1 In-Buffer Calibration protocol:

The protocol outlined by German et al. (2011), which will be referred to as the “In-Buffer Calibration (IBC)” protocol, corrects for quenching by measuring the interference from each individual component involved in an assay. The IBC protocol involves standard curves in the separate presence of homogenate (slurry of soil and buffer) and buffer. Other controls involved are the homogenate controls (i.e., sample slurry without added substrate), and substrate controls (i.e., substrate in the presence of buffer without sample slurry). The seperate standard curves correct for quenching of the fluorophore in two different solutions, which can affect later activity measurements. The homogenate and substrate controls correct for background fluorescence and abiotic degradation of the substrate, respectively. The IBC protocol measures activity based on one timepoint, which relies on the assumption that fluorescence in the sample at time zero is equal to the fluorescence of the homogenate control, corrected for quenching by the quench coefficient, minus the fluorescence of the substrate control. The equations to calculate activity are as follows:

\[\scriptsize (1)~Enzymatic~Activity~(mol~kg⁻¹~s⁻¹)~=~\frac{Net~Fluorescence~(fsu)~*~Buffer~Volume~(L)}{Emission~Coefficient~*~ Homogenate~Volume~(L)~*~Time~(s)~*~Soil~Mass~(kg)}\]
\[\scriptsize (2)~Net~Fluorescence~(fsu)~=~\frac{Assay~(fsu)~-~Homogenate~Control~(fsu)}{Quench~Coefficient}~-~Substrate~Control~(fsu)\]
\[\scriptsize (3)~Emission~Coefficient~(fsu~mol⁻¹)~=~\frac{Standard~Curve~Slope~[in~presence~of~homogenate]~(\frac{fsu}{\frac{mol}{L}})}{Assay~Volume~(L)}\]
\[\scriptsize (4)~Quench~Coefficient~=~\frac{Slope~of~Standard~Curve~[in~presence~of~homogenate]~(\frac{fsu}{\frac{mol}{L}})}{Slope~of~Standard~Curve~[in~presence~of~buffer]~(\frac{fsu}{\frac{mol}{L}})}\]
As written, the IBC protocol only applies to samples with a solid component, such as soil or sediment. To adjust this protocol for water samples, we replaced the soil mass from Equation 1 with the homogenate volume. When a solid is not present, the homogenate can simply be defined as the water sample in its entirety.

\[\scriptsize (5)~Enzymatic~Activity~(mol~L⁻¹~s⁻¹)~=~\frac{Net~Fluorescence~(fsu)~*~Buffer~Volume~(L)}{Emission~Coefficient~*~ Homogenate~Volume~(L)~*~Time~(s)~*~Homogenate~Volume~(L)}\]

*Equations 1 through 5 were edited from German et al. (2011) to reflect the International System (SI) of Units.

1.2 In-Sample Calibration protocol:

Unlike the IBC protocol, early environmental extracellular enzyme assays simply measured the change in fluorescence per unit time of a live sample versus that same rate of change of an autoclaved or killed sample (Hoppe, 1983), with a calibration curve measured using fluorophore added to the sample. This protocol will be referred to as the “In-Sample Calibration (ISC)” protocol. In contrast to the widespread use of the IBC Protocol within the soil microbial ecology community (DeForest, 2009; Allison et al., 2009; Stone et al., 2012), the ISC protocol has been widely used in within the aquatic microbial ecology community. The ISC protocol corrects for quenching by measuring bulk interference, which relies on the assumption that the behavior of the free fluorophore released from substrates behaves identically to the free fluorophore added to the sample to construct a calibration curve. The ISC protocol uses a standard curve in the presence of homogenate-buffer solution and killed controls, which comprise of substrate in the presence of autoclaved or boiled homogenate-buffer solution. Activity is calcluated as the slope of concentation of fluorphore with respect to time (m in Equations 7 and 9), which requires a minimum of two timepoints.

\[\scriptsize (6)~Enzymatic~Activity~(mol~kg⁻¹~s⁻¹)~=~Sample~Activity~(mol~kg⁻¹~s⁻¹)~-~Killed~Control~Activity~(mol~kg⁻¹~s⁻¹)\]
Activity for either the sample or the killed control is calculated as:

\[\scriptsize (7)~Activity~(mol~kg⁻¹~s⁻¹)~=~\frac{m~(mol~L⁻¹~s⁻¹)}{Soil~Mass~(kg)}~*~Assay~V olume~(L)\]
\[\scriptsize (8)~Concentration~of~Fluorophore~(mol~L⁻¹)~=~\frac{Fluorescence~(fsu)~-~Intercept~of~Standard~Curve~[in~presence~of~homogenate]}{Slope~of~Standard~Curve~[in~presence~of~homogenate]}\]

For a liquid sample or killed control, Equation 7 can be simplified as follows:

\[\scriptsize (9)~Activity~(mol~L⁻¹~s⁻¹)~=~m~(mol~L⁻¹~s⁻¹)\] Figure 1 shows the standards and controls , depicted as cuvette solutions. Although each protocol uses unique standards and controls, the assay sample from which raw fluorescence data is measured remains the same.

Figure 1: Standards and controls of each protocol.

Figure 1: Standards and controls of each protocol.

2 Installation

The latest versions of ezmmek are available through CRAN and GitHub.

2.1 CRAN

install.packages("ezmmek")

2.2 GitHub

2.2.1 Install and load devtools

install.packages("devtools")
library(devtools)

2.2.2 Install ezmmek

install_github("ccook/ezmmek")

2.2.3 Required packages

assertable
dplyr
magrittr
nls2
purrr
rlang
tidyr

3 How to use

3.1 Load ezmmek

library(ezmmek)

3.2 Example datasets

Both protocols were applied to the same freshwater sample, which was collected from Third Creek in Tyson Park, Knoxville, TN 37919. The standard curve csv file contains data for both protocols. The raw activity csv files are split by protocol. In these example datasets, all column names but ‘site.name’ and ‘std.type’ are required for ezmmek to function properly. Although the exact names of ‘site_name’ and ‘std_type’ are not required, the user must input at least one descriptor column that is present in both the standard curve dataset and the raw activity dataset for any functions that rely on both datasets. The units are identified in the example datasets below, but units can be of any variety, and the user is responsible for keeping track of units throughout the analyses.

3.2.1 Standard curve data

std_data <- read.csv(std_data)
dplyr::glimpse(std_data)
#> Rows: 10
#> Columns: 6
#> $ site_name          <fct> tyson, tyson, tyson, tyson, tyson, tyson, tyson,...
#> $ std_type           <fct> amc, amc, amc, amc, amc, amc, amc, amc, amc, amc
#> $ std_conc           <int> 0, 0, 1000, 1000, 2000, 2000, 3000, 3000, 4000, ...
#> $ homo_signal        <dbl> 1622.52, 1554.07, 284096.21, NA, 390034.65, 9240...
#> $ buffer_signal      <dbl> 476.02, 490.22, 181100.01, 270332.25, 416369.78,...
#> $ homo_buffer_signal <dbl> 1413.80, 1418.07, 242117.28, 333517.90, 408671.3...
site_name: Descriptor column (Tyson Park, Knoxville, TN)
std_type: Descriptor column (7-Amino-4-methylcoumarin; AMC)
std_conc: Standard concentration ([micro]M)
homo_signal: Signal from standard in homogenate (fsu)
buffer_signal: Signal from standard in buffer (fsu)

3.2.2 Raw fluorescence data, IBC protocol

raw_fsu_data_ibc <- read.csv(fsu_data_ibc)
dplyr::glimpse(raw_fsu_data_ibc)
#> Rows: 12
#> Columns: 13
#> $ site_name         <fct> tyson, tyson, tyson, tyson, tyson, tyson, tyson, ...
#> $ std_type          <fct> amc, amc, amc, amc, amc, amc, amc, amc, amc, amc,...
#> $ substrate_type    <fct> l-leucine-amc, l-leucine-amc, l-leucine-amc, l-le...
#> $ time              <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
#> $ substrate_conc    <int> 0, 0, 0, 50, 50, 50, 100, 100, 100, 200, 200, 200
#> $ signal            <dbl> 1673.96, 1416.30, 1532.66, 64853.04, 78347.32, 52...
#> $ replicate         <int> 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3
#> $ buffer_vol        <dbl> 0.00014, 0.00014, 0.00014, 0.00014, 0.00014, 0.00...
#> $ homo_vol          <dbl> 0.00086, 0.00086, 0.00086, 0.00086, 0.00086, 0.00...
#> $ soil_mass         <dbl> 0.00086, 0.00086, 0.00086, 0.00086, 0.00086, 0.00...
#> $ std_vol           <dbl> 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, ...
#> $ homo_control      <dbl> 1385.86, 1377.78, 1384.83, 1385.86, 1377.78, 1384...
#> $ substrate_control <dbl> 681.30, 805.47, 579.74, 18437.34, 30644.73, 24508...
site_name: Descriptor column (Tyson Park, Knoxville, TN)
std_type: Descriptor column (7-Amino-4-methylcourmarin; AMC)
time: Timepoints at which signal was collected (hours)
signal: Signal from assay (fsu)
substrate_conc: Substrate concentration, ([micro]M)
replicate: Sample replicate (integer)
homo_vol: Homogenate volume (L)
soil_mass: Soil mass, or homogenate volume for a water sample (L) 
std_vol: Standard volume (L)
homo_control: Homogenate control (fsu)
substrate_control: Substrate control (fsu)

3.2.3 Raw fluorescence data, ISC protocol

raw_fsu_data_isc <- read.csv(fsu_data_isc)
dplyr::glimpse(raw_fsu_data_isc)
#> Rows: 60
#> Columns: 9
#> $ site_name      <fct> tyson, tyson, tyson, tyson, tyson, tyson, tyson, tys...
#> $ std_type       <fct> amc, amc, amc, amc, amc, amc, amc, amc, amc, amc, am...
#> $ substrate_type <fct> l-leucine-amc, l-leucine-amc, l-leucine-amc, l-leuci...
#> $ time           <dbl> 0.0000000, 0.3333333, 0.6666667, 1.0000000, 2.000000...
#> $ substrate_conc <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50,...
#> $ replicate      <int> 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 1, 1, 1...
#> $ signal         <dbl> 1474.31, 1513.18, 1552.85, 1566.03, 1673.96, 1158.92...
#> $ kill_control   <dbl> 1330.46, 1408.77, 1456.39, 1564.86, 1596.63, 1549.82...
#> $ assay_vol      <dbl> 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.0...
site_name: Descriptor column (Tyson Park, Knoxville, TN)
std_type: Descriptor column (7-Amino-4-methylcourmarin; AMC)
time: Timepoints at which signal was collected (hours)
signal: Signal from assay (fsu)
substrate_conc: Substrate concentration ([micro]Molar)
replicate: Sample replicate (integer)
kill_control: Signal from autoclaved sample (fsu)

3.3 Visible functions

ezmmek contains several functions that create new data.frame objects. The functions build upon each other. The user can choose how much analyses to perform, from generating standard curve models to calculating \(K_m\) and \(V_{max}\) values. In descending order of parent functions to child functions:

new_ezmmek_sat_fit
new_ezmmek_act_calibrate
new_ezmmek_act_group
new_ezmmek_std_group

3.3.1 Create data.frame object of class new_ezmmek_sat_fit

new_obj <- new_ezmmek_sat_fit(std.data.fn,
                              act.data.fn,
                              ...,
                              km = NULL,
                              vmax = NULL,
                              method = NA)
std.data.fn: Standard curve data file as character string
act.data.fn: Raw activity data file as character string
...: User defined column names to join and group std.data.fn and act.data.fn
km: Starting value to estimate km. Default value is median of 'sub.conc' values
vmax: Starting value to estimate vmax. Default value is max calibrated activity
method: Enzyme assay protocol. Must define method as '"ibc"' or '"isc"'

‘“std.data.fn”’ is the name of the standard curve data file. ‘“act.data.fn”’ is the name of the raw activity data file. ‘…’ are the user-defined column names by which the standard curve and raw activity data files are grouped and joined (i.e. descriptor columns like site name and type of fluorophore) to create a new data.frame. The default numeric starting values of ‘km’ and ‘vmax’ are those predicted by ezmmek. ‘km’ is calculated as the median substrate concentration used during the experiment. ‘vmax’ is calculated as the maximum calibrated activity value. The user can assign their own ‘km’ and ‘vmax’ starting values if they so choose. ‘method’ must be set equal to ‘“ibc”’ or ‘“isc”’. The resulting dataframe contains the descriptor columns, standard curve data, raw activity data, calibrated activity data, and Michaelis-Menten fits.

3.3.2 Create data.frame object of class new_ezmmek_calibrate

new_obj <- new_ezmmek_act_calibrate(std.data.fn,
                                    act.data.fn,
                                    ...,
                                    method = NA,
                                    columns = NULL)
std.data.fn: Standard curve data file as character string
act.data.fn: Raw activity data file as character string
...: User defined column names to join and group std.data.fn and act.data.fn
method: Enzyme assay protocol. Must define method as '"ibc"' or '"isc"'
columns: User defined column names to join and group std.data.fn and act.data.fn

‘columns’ carries over any ‘…’ arguments from parent functions. If the user does not run this function within a parent function, the ‘columns’ argument can be ignored and left on the ‘NULL’ default. ‘…’ arguments must named if this function is used on its own. The resulting data.frame contains the calibrated activities, but not the Michaelis-Menten fits.

3.3.3 Create data.frame object of class new_ezmmek_act_group

new_obj <- new_ezmmek_act_group(act.data.fn,
                                ...,
                                method = NA,
                                columns = NULL)
act.data.fn: Raw activity data file as character string
...: User defined column names to join and group std.data.fn and act.data.fn
method: Enzyme assay protocol. Must define method as '"ibc"' or '"isc"'
columns: User defined column names to join and group std.data.fn and act.data.fn

‘columns’ carries over any ‘…’ arguments from parent functions. If the user does not run this function within a parent function, the ‘columns’ argument can be ignored and left on the ‘NULL’ default. ‘…’ arguments must be named if this function is used on its own. The resulting data.frame contains grouped data of ‘act.data.fn’, as specified by column names.

3.3.4 Create data.frame object of class new_ezmmek_std_group

new_obj <- new_ezmmek_std_group(std.data.fn,
                                ...,
                                method = NA,
                                columns = NULL)
std.data.fn: Standard curve data file as character string
...: User defined column names to join and group std.data.fn and act.data.fn
method: Enzyme assay protocol. Must define method as '"ibc"' or '"isc"'
columns: User defined column names to group std.data.fn

‘columns’ carries over any ‘…’ arguments from parent functions. If the user does not run this function within a parent function, the ‘columns’ argument can be ignored and left on the ‘NULL’ default. ‘…’ arguments must be named if this function is used on its own. The resulting data.frame contains grouped ‘std.data.fn’ data, as specified by column names, and standard curve linear models for each group.

4 Example analyses

4.1 new_ezmmek_sat_fit

4.1.1 new_ezmmek_sat_fit, IBC

sat_fit_ibc <- new_ezmmek_sat_fit(std_data, 
                                  fsu_data_ibc, 
                                  site_name, 
                                  std_type,
                                  km = NULL,
                                  vmax = NULL,
                                  method = "ibc")

dplyr::glimpse(sat_fit_ibc)

4.1.2 new_ezmmek_sat_fit, ISC

sat_fit_isc <- new_ezmmek_sat_fit(std_data, 
                                  fsu_data_isc, 
                                  site_name, 
                                  std_type,
                                  km = NULL,
                                  vmax = NULL,
                                  method = "isc")
#> [1] "C:/Users/kanga/AppData/Local/Temp/RtmpYrqaHw/Rinst3b2025431d30/ezmmek/extdata/tyson_sat_steen_04172020.csv"
#> Joining, by = c("site_name", "std_type")

dplyr::glimpse(sat_fit_isc)
#> Rows: 1
#> Columns: 14
#> $ site_name                    <fct> tyson
#> $ std_type                     <fct> amc
#> $ substrate_type               <fct> l-leucine-amc
#> $ assay_vol                    <dbl> 0.001
#> $ std_raw_data_isc             <list<tbl_df[,4]>> [<tbl_df[10 x 4]>]
#> $ std_lm_homo_buffer_obj       <list> [<-12363.5766, 268.7094, 13777.38, 13...
#> $ std_lm_homo_buffer_slope     <dbl> 268.7094
#> $ std_lm_homo_buffer_intercept <dbl> -12363.58
#> $ act_calibrated_data_isc      <list> [<grouped_df[60 x 9]>]
#> $ mm_fit_obj                   <list> [<function () , resid, function () , ...
#> $ km                           <dbl> 70.87287
#> $ vmax                         <dbl> 110.1716
#> $ pred_grid                    <list> [<data.frame[1000 x 1]>]
#> $ pred_activities              <list> [<data.frame[1000 x 2]>]

4.2 new_ezmmek_act_calibrate

4.2.1 new_ezmmek_act_calibrate, IBC

act_calibrate_ibc <- new_ezmmek_act_calibrate(std_data,
                                              fsu_data_ibc,
                                              site_name,
                                              std_type,
                                              method = "ibc",
                                              columns = NULL)
#> [1] "C:/Users/kanga/AppData/Local/Temp/RtmpYrqaHw/Rinst3b2025431d30/ezmmek/extdata/tyson_sat_german_04172020.csv"
#> Joining, by = c("site_name", "std_type")

dplyr::glimpse(act_calibrate_ibc)
#> Rows: 1
#> Columns: 13
#> $ site_name               <fct> tyson
#> $ std_type                <fct> amc
#> $ substrate_type          <fct> l-leucine-amc
#> $ std_raw_data_ibc        <list<tbl_df[,4]>> [<tbl_df[10 x 4]>]
#> $ std_lm_homo_obj         <list> [<-61510.1892, 404.7843, 63132.71, 63064.2...
#> $ std_lm_homo_slope       <dbl> 404.7843
#> $ std_lm_homo_intercept   <dbl> -61510.19
#> $ std_lm_buffer_obj       <list> [<7771.8330, 235.0969, -7295.813, -7281.61...
#> $ std_lm_buffer_slope     <dbl> 235.0969
#> $ std_lm_buffer_intercept <dbl> 7771.833
#> $ quench_coef             <dbl> 1.721776
#> $ emission_coef           <dbl> 404784.3
#> $ act_calibrated_data_ibc <list> [<grouped_df[12 x 14]>]

4.2.2 new_ezmmek_act_calibrate, ISC

act_calibrate_isc <- new_ezmmek_act_calibrate(std_data,
                                              fsu_data_isc,
                                              site_name,
                                              std_type,
                                              method = "isc",
                                              columns = NULL)
#> [1] "C:/Users/kanga/AppData/Local/Temp/RtmpYrqaHw/Rinst3b2025431d30/ezmmek/extdata/tyson_sat_steen_04172020.csv"
#> Joining, by = c("site_name", "std_type")

dplyr::glimpse(act_calibrate_isc)
#> Rows: 1
#> Columns: 9
#> $ site_name                    <fct> tyson
#> $ std_type                     <fct> amc
#> $ substrate_type               <fct> l-leucine-amc
#> $ assay_vol                    <dbl> 0.001
#> $ std_raw_data_isc             <list<tbl_df[,4]>> [<tbl_df[10 x 4]>]
#> $ std_lm_homo_buffer_obj       <list> [<-12363.5766, 268.7094, 13777.38, 13...
#> $ std_lm_homo_buffer_slope     <dbl> 268.7094
#> $ std_lm_homo_buffer_intercept <dbl> -12363.58
#> $ act_calibrated_data_isc      <list> [<grouped_df[60 x 9]>]

4.3 new_ezmmek_act_group

4.3.1 new_ezmmek_act_group, IBC

act_group_ibc <- new_ezmmek_act_group(fsu_data_ibc,
                                      site_name,
                                      std_type,
                                      method = "ibc",
                                      columns = NULL)
#> [1] "C:/Users/kanga/AppData/Local/Temp/RtmpYrqaHw/Rinst3b2025431d30/ezmmek/extdata/tyson_sat_german_04172020.csv"

dplyr::glimpse(act_group_ibc)
#> Rows: 1
#> Columns: 3
#> $ site_name        <fct> tyson
#> $ std_type         <fct> amc
#> $ act_raw_data_ibc <list<tbl_df[,11]>> [<tbl_df[12 x 11]>]

4.3.2 new_ezmmek_act_group, ISC

act_group_isc <- new_ezmmek_act_group(fsu_data_isc,                                                                   site_name,
                                      std_type,
                                      method = "isc",
                                      columns = NULL)
#> [1] "C:/Users/kanga/AppData/Local/Temp/RtmpYrqaHw/Rinst3b2025431d30/ezmmek/extdata/tyson_sat_steen_04172020.csv"

dplyr::glimpse(act_group_isc)
#> Rows: 1
#> Columns: 3
#> $ site_name        <fct> tyson
#> $ std_type         <fct> amc
#> $ act_raw_data_isc <list<tbl_df[,7]>> [<tbl_df[60 x 7]>]

4.4 new_ezmmek_std_group

4.4.1 new_ezmmek_std_group, IBC

std_group_ibc <- new_ezmmek_std_group(std_data,
                                      site_name,
                                      std_type,
                                      method = "ibc",
                                      columns = NULL)

dplyr::glimpse(std_group_ibc)
#> Rows: 1
#> Columns: 10
#> $ site_name               <fct> tyson
#> $ std_type                <fct> amc
#> $ std_raw_data_ibc        <list<tbl_df[,4]>> [<tbl_df[10 x 4]>]
#> $ std_lm_homo_obj         <list> [<-61510.1892, 404.7843, 63132.71, 63064.2...
#> $ std_lm_homo_slope       <dbl> 404.7843
#> $ std_lm_homo_intercept   <dbl> -61510.19
#> $ std_lm_buffer_obj       <list> [<7771.8330, 235.0969, -7295.813, -7281.61...
#> $ std_lm_buffer_slope     <dbl> 235.0969
#> $ std_lm_buffer_intercept <dbl> 7771.833
#> $ quench_coef             <dbl> 1.721776

4.4.2 new_ezmmek_std_group, ISC

std_group_isc <- new_ezmmek_std_group(std_data,
                                      site_name,
                                      std_type,
                                      method = "isc",
                                      columns = NULL)
dplyr::glimpse(std_group_isc)
#> Rows: 1
#> Columns: 6
#> $ site_name                    <fct> tyson
#> $ std_type                     <fct> amc
#> $ std_raw_data_isc             <list<tbl_df[,4]>> [<tbl_df[10 x 4]>]
#> $ std_lm_homo_buffer_obj       <list> [<-12363.5766, 268.7094, 13777.38, 13...
#> $ std_lm_homo_buffer_slope     <dbl> 268.7094
#> $ std_lm_homo_buffer_intercept <dbl> -12363.58

5 Methods for new_ezmmek objects

5.1 plot

plot methods were created for each new_ezmmek object. The user can choose how to facet their plots by adding those columns/variables as arguments. Because each new_ezmmek object is built off another, the child functions can be applied to objects created by more parent functions. For example, one can plot a standard curve using plot.new_ezmmek_std_group(sat_fit_ibc).

5.1.1 new_ezmmek_sat_fit, IBC and ISC

Plot overlay of saturation curve on activities

plot(sat_fit_isc, site_name, std_type, substrate_type)

5.1.2 new_ezmmek_calibrate, IBC and ISC

Plot activities and their associated error

plot(act_calibrate_ibc, site_name, std_type, substrate_type)

plot(act_calibrate_isc, site_name, std_type, substrate_type)

5.1.3 new_ezmmek_act_group, IBC and ISC

Plot raw activity data

plot(act_group_ibc, site_name, std_type, substrate_type)

plot(act_group_isc, site_name, substrate_type, std_type, substrate_conc)
#> `geom_smooth()` using formula 'y ~ x'

5.1.4 new_ezmmek_std_group, IBC and ISC

Plot standard curve(s)

plot(std_group_ibc, site_name, std_type)
#> `geom_smooth()` using formula 'y ~ x'
#> Warning: Removed 2 rows containing non-finite values (stat_smooth).
#> Warning: Removed 2 rows containing missing values (geom_point).

#> `geom_smooth()` using formula 'y ~ x'

plot(std_group_isc, site_name, std_type)

6 References

German et al. (2011) doi:10.1016/j.soilbio.2011.03.017
Sinsabaugh et al. (2014) doi:10.1007/s10533-014-0030-y
Steen et al. (2019) doi:10.1128/AEM.00102-19
Steen and Arnosti (2011) doi:10.1016/j.marchem.2010.10.006

7 Authors

Christopher L. Cook () and Andrew D. Steen

8 License

This project is licensed under AGPL-3.