Make an initial guess of C4 hyperbola parameter values for one curve
initial_guess_c4_aci_hyperbola.Rd
Creates a function that makes an initial guess of C4 hyperbola model
parameter values for one curve. This function is used internally by
fit_c4_aci_hyperbola
.
Values estimated by this guessing function should be considered inaccurate, and should always be improved upon by an optimizer.
Details
Here we estimate values of c4_curvature
, c4_slope
, rL
,
and Vmax
from a measured C4 CO2 response curve. For more information
about these parameters, see the documentation for
calculate_c4_assimilation_hyperbola
.
Here we take a very simple approach to forming the initial guess. We always
choose c4_curvature = 0.5
, c4_slope = 1.0
, and rL = 0.0
.
For Vmax
, we use Vmax = max{A} - rL_guess
, where max{A}
is the largest observed net CO2 assimilation rate and rL_guess
is the
guess for rL
.
Value
A function with one input argument rc_exdf
, which should be an
exdf
object representing one C4 CO2 response curve. The return value of
this function will be a numeric vector with four elements, representing the
values of c4_curvature
, c4_slope
, rL
, and Vmax
(in that order).
Examples
# Read an example Licor file included in the PhotoGEA package
licor_file <- read_gasex_file(
PhotoGEA_example_file_path('c4_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'
)
# Create the guessing function
guessing_func <- initial_guess_c4_aci_hyperbola()
# Apply it and see the initial guesses for each curve
print(by(licor_file, licor_file[, 'species_plot'], guessing_func))
#> $`maize - 5`
#> [1] 0.50000 1.00000 0.00000 67.33821
#>
#> $`sorghum - 2`
#> [1] 0.50000 1.00000 0.00000 71.16098
#>
#> $`sorghum - 3`
#> [1] 0.50000 1.00000 0.00000 69.62463
#>
# 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_c4_aci_hyperbola,
optim_fun = optimizer_null()
))
plot_c4_aci_hyperbola_fit(aci_results, 'species_plot', ylim = c(-10, 100))