View source: R/initial_guess_c3_aci.R
| initial_guess_c3_aci | R Documentation |
Creates a function that makes an initial guess of FvCB model parameter values
for one curve. This function is used internally by fit_c3_aci.
Values estimated by this guessing function should be considered inaccurate, and should always be improved upon by an optimizer.
initial_guess_c3_aci(
alpha_g,
alpha_old,
alpha_s,
alpha_t,
Gamma_star_at_25,
gmc_at_25,
Kc_at_25,
Ko_at_25,
cc_threshold_rl = 100,
Wj_coef_C = 4.0,
Wj_coef_Gamma_star = 8.0,
a_column_name = 'A',
ci_column_name = 'Ci',
gamma_star_norm_column_name = 'Gamma_star_norm',
gmc_norm_column_name = 'gmc_norm',
j_norm_column_name = 'J_norm',
kc_norm_column_name = 'Kc_norm',
ko_norm_column_name = 'Ko_norm',
oxygen_column_name = 'Oxygen',
rl_norm_column_name = 'RL_norm',
total_pressure_column_name = 'total_pressure',
tp_norm_column_name = 'Tp_norm',
vcmax_norm_column_name = 'Vcmax_norm',
debug_mode = FALSE
)
alpha_g |
A dimensionless parameter where |
alpha_old |
A dimensionless parameter where |
alpha_s |
A dimensionless parameter where |
alpha_t |
A dimensionless parameter where |
Gamma_star_at_25 |
The chloroplastic CO2 concentration at which CO2 gains from Rubisco
carboxylation are exactly balanced by CO2 losses from Rubisco oxygenation,
at 25 degrees C, expressed in |
gmc_at_25 |
The mesophyll conductance to CO2 diffusion at 25 degrees C, expressed in
|
Kc_at_25 |
The Michaelis-Menten constant for Rubisco carboxylation at 25 degrees C,
expressed in |
Ko_at_25 |
The Michaelis-Menten constant for Rubisco oxygenation at 25 degrees C,
expressed in |
cc_threshold_rl |
An upper cutoff value for the chloroplast CO2 concentration in
|
Wj_coef_C |
A coefficient in the equation for RuBP-regeneration-limited carboxylation,
whose value depends on assumptions about the NADPH and ATP requirements of
RuBP regeneration; see |
Wj_coef_Gamma_star |
A coefficient in the equation for RuBP-regeneration-limited carboxylation,
whose value depends on assumptions about the NADPH and ATP requirements of
RuBP regeneration; see |
a_column_name |
The name of the column in |
ci_column_name |
The name of the column in |
gamma_star_norm_column_name |
The name of the column in |
gmc_norm_column_name |
The name of the column in |
j_norm_column_name |
The name of the column in |
kc_norm_column_name |
The name of the column in |
ko_norm_column_name |
The name of the column in |
oxygen_column_name |
The name of the column in |
rl_norm_column_name |
The name of the column in |
total_pressure_column_name |
The name of the column in |
tp_norm_column_name |
The name of the column in |
vcmax_norm_column_name |
The name of the column in |
debug_mode |
A logical ( |
Here we estimate values of J_at_25, RL_at_25, Tp_at_25,
and Vcmax_at_25 from a measured C3 CO2 response curve. It is difficult
to estimate values of alpha_g, alpha_old, alpha_s,
alpha_t, Gamma_star_at_25, gmc_at_25, Kc_at_25,
Ko_at_25 from a curve, so they must be supplied beforehand. For more
information about these parameters, see the documentation for
calculate_c3_assimilation.
Estimating RL: Regardless of which process is limiting at low
Cc, it is always true that An = -RL when
Cc = Gamma_star_agt. Here we make a linear fit of the measured
An vs. Cc values where Cc is below
cc_threshold_rl, and evaluate it at at
Cc = Gamma_star_agt to estimate RL. If there are fewer
than two points with Cc <= cc_threshold_rl, the fit cannot be
made, and we use a typical value instead
(1.0 micromol m^(-2) s^(-1)). Likewise, if the linear fit
predicts a negative or NA value for RL, we use the same
typical value instead.
Estimating Vc: Once an estimate for RL has been found,
the RuBP carboxylation rate Vc can be estimated using
Vc = (An + RL) / (1 - Gamma_star_agt / Cc). This is useful for
the remaining parameter estimates.
Estimating Vcmax: An estimate for Vcmax can be
obtained by solving the equation for Wc for Vcmax, and
evaluating it with Wc = Vc as estimated above. In the
rubisco-limited part of the curve, Vc = Wc and the estimated
values of Vcmax should be reasonable. In other parts of the
curve, Wc is not the limiting rate, so Vc < Wc.
Consequently, the estimated values of Vcmax in these parts of
the curve will be smaller. So, to make an overall estimate, we choose
the the largest estimated Vcmax value.
Estimating J and Tp: Estimates for these parameters can be
made using the equations for Wj and Wp, similar to the
approach followed for Vcmax.
For the parameter values estimated above, the values of RL_norm,
Vcmax_norm, and J_norm are used to convert the values at leaf
temperature to the values at 25 degrees C.
A function with one input argument rc_exdf, which should be an
exdf object representing one C3 CO2 response curve. The return value of
this function will be a numeric vector with twelve elements, representing the
values of alpha_g, alpha_old, alpha_s, alpha_t,
Gamma_star_at_25, gmc_at_25, J_at_25, Kc_at_25,
Ko_at_25, RL_at_25, Tp_at_25, and Vcmax_at_25 (in
that order).
# Read an example Licor file included in the PhotoGEA package
licor_file <- read_gasex_file(
PhotoGEA_example_file_path('c3_aci_1.xlsx')
)
# Define a new column that uniquely identifies each curve
licor_file[, 'species_plot'] <-
paste(licor_file[, 'species'], '-', licor_file[, 'plot'] )
# Organize the data
licor_file <- organize_response_curve_data(
licor_file,
'species_plot',
c(9, 10, 16),
'CO2_r_sp'
)
# Calculate the total pressure in the Licor chamber
licor_file <- calculate_total_pressure(licor_file)
# Calculate temperature-dependent values of C3 photosynthetic parameters
licor_file <- calculate_temperature_response(licor_file, c3_temperature_param_bernacchi)
# Create the guessing function; here we set:
# - All alpha values to 0
# - Gamma_star_at_25 to 40 micromol / mol
# - gmc to infinity
# - Kc_at_25 to 400 micromol / mol
# - Ko_at_25 to 275 mmol / mol
guessing_func <- initial_guess_c3_aci(
alpha_g = 0,
alpha_old = 0,
alpha_s = 0,
alpha_t = 0,
Gamma_star = 40,
gmc_at_25 = Inf,
Kc_at_25 = 400,
Ko_at_25 = 275
)
# Apply it and see the initial guesses for each curve
print(by(licor_file, licor_file[, 'species_plot'], guessing_func))
# A simple way to visualize the guesses is to "fit" the curves using the null
# optimizer, which simply returns the initial guess
aci_results <- consolidate(by(
licor_file,
licor_file[, 'species_plot'],
fit_c3_aci,
fit_options = list(alpha_old = 0),
optim_fun = optimizer_null(),
remove_unreliable_param = 0
))
plot_c3_aci_fit(aci_results, 'species_plot', 'Ci')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.