View source: R/calculate_gm_ubierna.R
calculate_gm_ubierna | R Documentation |
Calculates mesophyll conductance to CO2 diffusion (gmc
) from combined
gas exchange and isotope discrimination measurements as described in Ubierna
et al. (2018). This function can accomodate alternative colum names for the
variables taken from exdf_obj
; it also checks the units of each
required column and will produce an error if any units are incorrect.
calculate_gm_ubierna(
exdf_obj,
e = -3,
f = 11,
a_bar_column_name = 'a_bar',
a_column_name = 'A',
ci_column_name = 'Ci',
co2_s_column_name = 'CO2_s',
csurface_column_name = 'Csurface',
delta_c13_r_column_name = 'delta_C13_r',
delta_obs_tdl_column_name = 'Delta_obs_tdl',
gamma_star_column_name = 'Gamma_star_tl',
rl_column_name = 'RL',
total_pressure_column_name = 'total_pressure',
t_column_name = 't'
)
exdf_obj |
An |
e |
The isotopic fractionation during day respiration in |
f |
The isotopic fractionation during photorespiration in |
a_bar_column_name |
The name of the column in |
a_column_name |
The name of the column in |
ci_column_name |
The name of the column in |
co2_s_column_name |
The name of the column in |
csurface_column_name |
The name of the column in |
delta_c13_r_column_name |
The name of the column in |
delta_obs_tdl_column_name |
The name of the column in |
gamma_star_column_name |
The name of the column in |
rl_column_name |
The name of the column in |
total_pressure_column_name |
The name of the column in |
t_column_name |
The name of the column in |
This function uses the comprehensive model for photosynthetic discrimination against 13C in C3 plants to calculate mesophyll conductance, as described in Ubierna et al. (2018). In particular, the following equations from that source are implemented in the code:
Isotopic fractionation due to day respiration (e_prime
) is
calculated using Equations 28 and 30.
Isotopic discrimination due to photorespiration (Delta_f
), due
to day respiration (Delta_e
), and that would occur if Ci = Cc
in the absence of any respiratory fractionation (Delta_i
) are
calculated using Equations 34, 33, and 31, respectively.
Mesophyll conductance to CO2 diffusion (gmc
) is calculated
using Equation 44. This equation is broken up into two factors called
Delta_difference
and equation_top
which are separately
returned in the output from calculate_gm_ubierna
.
For an alternative method for calculating gmc
, see
calculate_gm_busch
.
References:
Ubierna, N., Holloway-Phillips, M.-M. and Farquhar, G. D. "Using Stable Carbon Isotopes to Study C3 and C4 Photosynthesis: Models and Calculations." in Photosynthesis: Methods and Protocols (ed. Covshoff, S.) 155–196 (Springer, 2018) [\Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/978-1-4939-7786-4_10")}].
An exdf
object based on exdf_obj
that includes the following
additional columns, calculated as described above: e_prime
,
Delta_i
, Delta_e
, Delta_f
, Delta_difference
,
equation_top
, and gmc
. The category for each of these new
columns is calculate_gm_ubierna
to indicate that they were created
using this function.
## In this example we load gas exchange and TDL data files, calibrate the TDL
## data, pair the data tables together, and then calculate mesophyll conductance
# Read the TDL data file, making sure to interpret the time zone as US Central
# time
tdl_data <- read_gasex_file(
PhotoGEA_example_file_path('tdl_for_gm.dat'),
'TIMESTAMP',
list(tz = 'America/Chicago')
)
# Identify cycles within the TDL data
tdl_data <- identify_tdl_cycles(
tdl_data,
valve_column_name = 'valve_number',
cycle_start_valve = 20,
expected_cycle_length_minutes = 2.7,
expected_cycle_num_valves = 9,
timestamp_colname = 'TIMESTAMP'
)
# Use reference tanks to calibrate the TDL data
processed_tdl <- consolidate(by(
tdl_data,
tdl_data[, 'cycle_num'],
process_tdl_cycle_erml,
noaa_valve = 2,
calibration_0_valve = 20,
calibration_1_valve = 21,
calibration_2_valve = 23,
calibration_3_valve = 26,
noaa_cylinder_co2_concentration = 294.996,
noaa_cylinder_isotope_ratio = -8.40,
calibration_isotope_ratio = -11.505
))
# Read the gas exchange data, making sure to interpret the time stamp in the US
# Central time zone
licor_data <- read_gasex_file(
PhotoGEA_example_file_path('licor_for_gm_site11.xlsx'),
'time',
list(tz = 'America/Chicago')
)
# Get TDL valve information from Licor file name; for this TDL system, the
# reference valve is 12 when the sample valve is 11
licor_data <- get_sample_valve_from_filename(licor_data, list('11' = 12))
# Get oxygen info from the Licor file preamble (needed for calculate_gamma_star)
licor_data <- get_oxygen_from_preamble(licor_data)
# Pair the Licor and TDL data by locating the TDL cycle corresponding to each
# Licor measurement
licor_data <- pair_gasex_and_tdl(licor_data, processed_tdl$tdl_data)
# Calculate total pressure (needed for calculate_gas_properties)
licor_data <- calculate_total_pressure(licor_data)
# Calculate Csurface (needed for calculate_ternary_correction)
licor_data <- calculate_gas_properties(licor_data)
# Calculate ternary correction
licor_data <- calculate_ternary_correction(licor_data)
# Set Rubisco specificity (needed for calculate_gamma_star)
licor_data <- set_variable(
licor_data,
'rubisco_specificity_tl',
'M / M',
value = 90
)
# Calculate Gamma_star (needed for calculate_gm_ubierna)
licor_data <- calculate_gamma_star(licor_data)
# Calculate isotope discrimination (needed for calculate_gm_ubierna)
licor_data <- calculate_isotope_discrimination(licor_data)
# Set respiration (needed for calculate_gm_ubierna)
licor_data <- set_variable(
licor_data,
'RL',
'micromol m^(-2) s^(-1)',
value = 1.2
)
# Calculate mesophyll conductance
licor_data <- calculate_gm_ubierna(licor_data)
# Calculate Cc using the new values of mesophyll conductance
licor_data <- calculate_temperature_response(
licor_data,
c3_temperature_param_flat['gmc_norm']
)
licor_data <- set_variable(
licor_data,
'gmc_at_25',
units = licor_data$units$gmc,
value = licor_data[, 'gmc']
)
licor_data <- apply_gm(licor_data)
# View some of the results
licor_data[, c('replicate', 'CO2_s', 'Delta_obs_tdl', 'gmc', 'Ci', 'Cc')]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.