Skip to contents padding-top: 70px;

Calculate leaf-temperature-dependent values of various parameters using Arrhenius equations. This function can accomodate alternative names for the leaf temperature column. It also checks the units of the leaf temperature column and will produce an error of the units are not correct.

Usage

calculate_arrhenius(
    exdf_obj,
    arrhenius_parameters,
    tleaf_column_name = 'TleafCnd'
  )

Arguments

exdf_obj

An exdf object representing data from a Licor gas exchange measurement system.

arrhenius_parameters

A list of named lists. Each list element should describe the Arrhenius scaling factor (c), activation energy in kJ / mol (Ea), and units (units) for a variable that follows an Arrhenius temperature dependence. The name of each list element should be the corresponding name of the variable.

tleaf_column_name

The name of the column in exdf_obj that contains the leaf temperature in units of degrees C.

Details

The Arrhenius equation is often used to calculate the temperature dependence of the rate of a chemical reaction. It is often stated as follows:

(1) rate = A * exp(-Ea / (R * T))

where A is the "pre-exponential factor" that sets the overall scaling, Ea is the activation energy, R is the ideal gas constant, and T is the temperature in Kelvin. See, for example, the Wikipedia page for the equation.

In photosynthesis research, it is common to use an alternative form of the equation, where the pre-exponential factor A is rewritten as an exponent A = exp(c), where c is a "scaling factor" whose value can be calculated from A according to c = ln(A)). In this formulation, the equation becomes:

(2) rate = exp(c) * exp(-Ea / (R * T)) = exp(c - Ea / (R * T))

The advantage of this version is that the natural logarithm of the rate is equal to c - Ea / (R * T). This means that the Arrhenius paramerer values can be easily determined from a linear fit of log(rate) against 1 / (R * T); c is the y-intercept and -Ea is the slope.

In calculate_arrhenius, the scaling factor (c), activation energy (Ea), and units (units) for a variable must be specified as elements of a list, which itself is a named element of arrhenius_parameters. For example, if a variable called Kc has c = 38.05, Ea = 79.43, and units of micromol mol^(-1), the arrhenius_parameters argument could be specified as follows: list(Kc = list(c = 38.05, Ea = 79.43, units = 'micromol mol^(-1)')). It is rare to directly specify the Arrhenius parameters; instead, it is more typical to use one of the pre-set values such as c3_arrhenius_sharkey.

Sometimes a publication will specify the value of a variable at 25 degrees C instead of the Arrhenius scaling factor c. In this case, there is a "trick" for determining the value of c. For example, if the Arrhenius exponent should be X at 25 degrees C, then we have the following: X = exp(c - Ea / (R * (25 + 273.15))), which we can solve algebraically for c as follows: c = ln(X) + Ea / f, where f = R * (25 + 273.15). As a special case, for parameters normalized to 1 at 25 degrees C, we have c = Ea / f. The value of f can be accessed as PhotoGEA:::f.

Another common scenario is that we may wish to convert the units of a variable defined by Arrhenius exponents. For example, let's say Y is determined by an Arrhenius exponent, i.e., that Y = exp(c - Ea / (R * T)), and we want to convert Y to different units via a multiplicative conversion factor cf. Then, in the new units, Y becomes Y_new = cf * Y = cf * exp(c - (R * T)). Through algebra, it is possible to combine cf with the original value of c as c_new = c + ln(cf). Then we can continue calculating Y_new using an Arrhenius factor as Y_new = exp(c_new - Ea / (R * T)).

Value

An exdf object based on exdf_obj that includes one new column for each element of arrhenius_parameters, where the temperature-dependent values of these new columns are determined using the temperature values specified by the tleaf_column_name column. The category of each of these new columns is calculate_arrhenius to indicate that they were created using this function.

Examples

# Read an example Licor file included in the PhotoGEA package
licor_file <- read_gasex_file(
  PhotoGEA_example_file_path('ball_berry_1.xlsx')
)

licor_file <- calculate_arrhenius(licor_file, c3_arrhenius_sharkey)

licor_file$units$Kc      # View the units of the new `Kc` column
#> [1] "micromol mol^(-1)"
licor_file$categories$Kc # View the category of the new `Kc` column
#> [1] "calculate_arrhenius"
licor_file[,'Kc']        # View the values of the new `Kc` column
#>  [1] 514.4424 476.5148 451.6481 443.3365 443.2988 438.5837 427.3056 603.5290
#>  [9] 557.2026 557.8568 543.9679 557.8977 557.3369 559.3194 655.1498 617.2999
#> [17] 595.9931 593.0777 591.0264 562.0319 583.4480 680.0888 631.4699 599.4342
#> [25] 585.5236 591.0018 561.7495 559.9348