Added version checks to user guides, which will send a warning to the user if the installed version of PhotoGEA is different from the expected version
identify_tdl_cycles now throws an error if no cycles
are identified
When reading Excel or plaintext Licor LI-6800 log files:
The contents of the preamble are now included as columns in the main data table
The column containing the oxygen concentration as a percentage is
now called Oxygen rather than oxygen (the only
difference is a captial O)
Files where the oxygen concentration was changed between log entries can now be read
Related to the changes above, the default value of
oxygen_column_name has changed to Oxygen in
all functions that have this input argument
Advice about altering instrument log files was added to the FAQ
Note: This version was never released on CRAN
Added new references to “Publications” vignette
Simplified the “Getting Started” vignette; it was confusing to have two different vignettes that both fit C3 A-Ci curves, and this also made maintenance more complicated
basic_stats to fail for
exdf objects with column names containing punctuation, such
as A:OKAdded “debug mode” option to A-Ci fitting functions; in debug mode, detailed information about the fit is printed to the R terminal to help with troubleshooting.
Added new options to check_response_curve_data, so
we can now check for ranges of npts, and for columns that should be
constant.
Parameter estimates from A-Ci fits are now set to NA
when the fit is overparameterized; in other words, when there are not
enough degrees of freedom.
When using read_gasex_file:
Files with a .txt extension are now assumed to be
plaintext when file_type is set to
AUTO.
Any rows whose values are all NA are removed; this
can be bypassed via the new remove_NA_rows
argument.
Fixed an error that prevented curve fits when
stats::lm returns NA values when making
initial guesses for RL.
Fixed an error that prevented curve fits when all Ca values are
NA.
Fixed an error that occurred when including user remarks for plaintext files with an extra blank row at the end.
This is the first version of PhotoGEA available on CRAN.
value and
examples sections in their documentation.tz = 'America/Chicago' when pairing TDL and gas
exchange data, since setting tz = 'US/Central' does not
seem to work on debian. CRAN checks the package examples on debian.read_cr3000, read_licor_6800_Excel,
and read_licor_6800_plaintext so they can be used in
examples without needing :::.maxiter to 40 when using
stats::uniroot to calculate confidence intervals; this
saves quite a bit of time compared to the default value (1000) and
prevents several examples from being flagged by R CMD check
for taking too long to run.message to send messages to the user in
rbind.exdf rather than cat or
print. This is necessary to comply with CRAN
requirements.Gamma_star from
its value at 25 degrees C. With this change, several functions
(including fit_c3_aci and fit_c3_variable_j)
now have separate inputs for Gamma_star_at_25 and
Gamma_star_norm. The fitting functions can now fit
Gamma_star_at_25 rather than Gamma_star, which
previously represented the value at leaf temperature. Since each set of
temperature response parameters (such as
c3_temperature_param_bernacchi) tends to use a different
value of Gamma_star_at_25, the temperature response
parameter lists now include both Gamma_star_at_25 and
Gamma_star_norm.Kc and
Ko from their values at 25 degrees C, and enabled fits of
Kc_at_25 and Ko_at_25. As with
Gamma_star, the temperature response parameter lists
include values at 25 degrees C and the normalized temperature
responses.alpha_j_at_25 and
theta_j_at_25 to the Jmax-related temperature response
parameter lists.calculate_gamma_star function now returns values of
Gamma_star_tl to more clearly indicate that the values are
specified at leaf temperature.organize_response_curve_data function now only
calls check_response_curve_data when points are being
removed, making it more flexible.frequent_questions.Rmd), and the other is a gallery of
PhotoGEA publications (publications.Rmd). Along with this
change, the pkgdown web site was reorganized to put the
PhotoGEA publications in their own tab on the main navigation bar.calculate_c3_assimilation. Allowing co-limitation is a
complication for fitting, and tends to produce unreasonable results, so
it doesn’t make sense to allow it.atp_use and nadph_use to
Wj_coef_C and Wj_coef_Gamma_star because the
old names and definitions for these parameters were not accurate.DESCRIPTION and README.md.Vc) and net assimilation rate
(An) are now consistent when using the min-A variant of the
FvCB model.calculate_jmax) and included it in the C3 and C4 A-Ci
curve vignettes. Along with this function, new temperature response
parameters were added: jmax_temperature_param_bernacchi and
jmax_temperature_param_flat. These employ polynomial
temperature responses, a new type that was also added to the package via
the calculate_temperature_response_polynomial
function.identify_c3_limiting_processes now returns each
co-limiting process when assimilation is co-limited.data.frame
objects in addition to exdf objects:
calculate_ball_berry_index,
calculate_c3_assimilation,
calculate_residuals, document_variables,
identify_c3_limiting_processes, and
set_variable.read_licor_6800_plaintext and
read_licor_6800_Excel.organize_response_curve_data that enables calculations of
average values for specified columns.exdf construction and element access; now it
is possible to provide just a few units when creating an
exdf object, and it is possible to create single-column
exdf objects.print or str on an
exdf object, the text printed to the terminal now explains
that it was generated by converting an exdf to a
data.frame.Measurements. A Remarks sheet is
optional.factorize_id_column can now work with other control
group names besides WT.Gamma_star was sometimes
accidentally removed from the outputs of fit_c3_aci and
fit_c3_variable_jcalculate_c3_assimilation
are checked to make sure they are supported. Going forward, any new
functions with optional arguments (such as calculate_jmax)
will use this same check.Qin from several functions related to C4 A-Ci
curves, since Qin is not actually needed for fitting C4
A-Ci curves.unit_dictionary is now a function rather than a
list, which enables better error messages when a quantity is not
included in the dictionary; a few mistakes were discovered this way (and
fixed).TRUE or FALSE) to a numeric indicator (0, 1,
or 2). These values indicate severe unreliability, potential
unreliability, and full reliability, respectively.calculate_c3_assimilation that allow variants of the FvCB
model to be used: use_min_A, TPU_threshold,
use_FRL, and consider_depletion. These can
also be specified when fitting curves.identify_c3_unreliable_pts was modified
to make it compatible with the new use_min_A option.remove_points, allowing users
to exclude points from any subsequent fits rather than completely
removing them.
plot_c3_aci_fit and the other fit plotting functions
have been altered to distinguish between points included in or excluded
from the fit.xyplot_avg_rc has been altered to exclude such points
when calculating average valuesbarchart_with_errorbarsfit_ball_berry: standard error for each fitted parameter,
and the p-value for the fit. A dedicated plotting function was also
added (plot_ball_berry_fit).fit_medlyncheck_required_columns and set_variablecalculate_arrhenius and
calculate_peaked_gaussian have been renamed to
calculate_temperature_response_arrhenius and
calculate_temperature_response_gaussian to better reflect
their purpose.calculate_temperature_response_johnson.Tp is now specified at 25 degrees C and follows a
temperature response function, as was already done for
Vcmax, J, and RL.Jmax is now specified at 25 degrees C, rather than at its
optimum value, for consistency with the other parameters that can be fit
in PhotoGEA.calculate_temperature_response. It internally calls
the other functions, so users can just use this single function.c4_arrhenius_von_caemmerer and
c4_peaked_gaussian_von_caemmerer have been consolidated
into a single list suitable for use with
calculate_temperature_response, caled
c4_temperature_param_vc.c3_arrhenius_sharkey and
c3_arrhenius_bernacchi lists now include
Johnson-Eyring-Williams reponses for Tp and
gmc and have been renamed to
c3_temperature_param_sharkey and
c3_temperature_param_bernacchi since they are no longer
pure list of Arrhenius parameters.read_licor_6800_Excel now checks to make sure the
A and gsw columns are not all zero; if these
columns are all zero, this indicates that the Excel file needs to be
“calculated,” and a relevant message is sent to the user.alpha_t)gmc_at_25)gmc_at_25) and to fit J rather
than Jmax.calculate_RL_laisk to
fit_laisk since a fitting procedure is used, and the method
also estimates Ci_star in addition to RL.plot_laisk_fit.residual_stats so the
AIC can be more easily calculated for fits from other packages.optimizer_nlminb) and improved
the optimizer documentation and testing. The new optimizer is a wrapper
for stats::nlminb and employs a quasi-Newton
algorithm.identify_c3_limiting_processes. This function is
used internally by fit_c3_aci and
fit_c3_variable_j.check_jfit_c4_aci_hyperbola.
This allows users to fit an empirical hyperbola to C4 A-Ci curves,
rather than the mechanistic model used in fit_c4_aci.
calculate_c4_assimilation_hyperbola,
confidence_intervals_c4_aci_hyperbola,
error_function_c4_aci_hyperbola,
initial_guess_c4_aci_hyperbola, and
plot_c4_aci_hyperbola_fit.fit_c4_aci_hyperbola and
calculate_c4_assimilation_hyperbolahard_constraints and it takes a
numerical value, where higher values impose more constraints on
parameter values. The highest value is 2.hard_constraints to 2 is equivalent to the
default behavior in previous versions of PhotoGEA.calculate_c3_assimilation,
calculate_c3_variable_j,
calculate_c4_assimilation, and
calculate_c4_assimilation_hyperbola, as well as any
functions that use these internally, such as
calculate_c3_limitations_warren and
fit_c3_aci.remove_unreliable_param input argument must now be a
numeric value rather than a logical value.
FALSE
in previous versions of PhotoGEA).TRUE in previous versions of PhotoGEA).fit_c4_aci, which had
previously suggested to avoid fitting more than one of
Vcmax_at_25, Vpr, and
Jmax_at_opt.require_positive_gmc input
argument of the fit_c3_variable_j function has been changed
to positive_a.Rd (the
rate of day respiration) has been changed to RL (the rate
of respiration in the light) and Rm (the rate of day
respiration occurring in the mesophyll) has been changed to
RLm (the rate of respiration in the light occurring in the
mesophyll). The subscript L for “light” is more clear than
d for “day,” since in some contexts d refers
to “dark.” One function name was modified during this process:
calculate_rd_laisk became
calculate_RL_laisk.basic_stats function was updated so it can ignore
NA values when calculating averages and standard
errors.check_response_curve_data function was updated so
there is now an option to create a warning rather than an error message
when a problem is detected.estimate_operating_point function was updated so a
value of NA for the Ca_atmospheric input
simply bypasses the operating point calculations. Along with this, the
default value for Ca_atmospheric was set to NA
in the fit_c3_aci, fit_c3_variable_j, and
fit_c4_aci functions. With these changes, calculating the
operating point is now optional.fit_c4_aci_hyperbola.3.6.0 to
4.0.0. The GitHub actions testing setup no longer works for
R < 4.0, so it has become too difficult to guarantee compatability
with an earlier version.fit_c3_aci, fit_c3_variable_j, and
fit_c4_aci.
sigma = 1.sigma = RMSE.sigma = RMSE.alpha_old (for
C3 A-Ci and Variable J fits); these settings will ensure more robust
fitting resultsalpha_old
(previously alpha_g), alpha_g, and
alpha_salpha_old is nonzero, then alpha_g and
alpha_s must be zero. Likewise, if alpha_g or
alpha_s is nonzero, then alpha_old must be
zero. This will prevent users from mixing the two models together.fit_c3_aci,
fit_c3_variable_j, and fit_c4_aci now include
a new output called fits_interpolated that contains values
of the predicted assimilation rates with a Ci step of 1
ppm.plot_c3_aci_fit
and plot_c4_aci_fit. These functions use the new
information in fits_interpolated to make nice plots
comparing the measured data and the fits.NA values when using
xyplot_avg_rc and barchart_with_errorbarsexclude_outliers to make sure it doesn’t
exclude NA valuesexdf objects to
CSV files and recreating exdf objects from
those files are now available: write.csv.exdf and
read.csv.exdf.Inf to be unreliable.calculate_c4_assimilation; now we have fully implemented
the von Caemmerer model equations. This also necessitated a new function
for temperature response calculations:
calculate_peaked_gaussian.fit_c4_aci:
alpha_psii, gbs, Jmax_at_opt and
Rm_frac.fit_c4_aci.optimizer_hjkb) and changed
their default arguments so a user must always specify the tolerance or
number of generations.read_licor_6800_Excel
and read_licor_6800_plaintext: get_oxygen.
When this input is TRUE,
get_oxygen_from_preamble will automatically be used to get
the oxygen percentage from the file’s preamble when it is loaded.read_gasex_file:
standardize_columns.read_licor_6800_plaintext can now read log files that
were closed and reopenedPhotoGEA_example_file_path
to avoid using system.file in examples since
system.path has been confusing for some userscheck_licor_data has been renamed to
check_response_curve_data since it is not limited to only
Licor measurements3.6.0.fit_c3_aci and fit_c3_variable_j):
alpha (related to
TPU) and Gamma_star.initial_guess_c3_aci and
initial_guess_c3_variable_j) can now accommodate
user-supplied values of alpha.fit_c3_aci, fit_c3_variable_j, and
fit_c4_aci):
error_function_c3_aci,
error_function_c3_variable_j, and
error_function_c4_aci.confidence_intervals_c3_aci,
confidence_intervals_c3_variable_j, and
confidence_intervals_c4_aci.calculate_c3_assimilation).NA
for all results, along with a message explaining the issue.Rd with the Laisk
method: calculate_rd_laiskalpha, and several
different “alphas” were used throughout PhotoGEA. To avoid
confusion, the values in PhotoGEA were renamed as follows:
alpha_g: used in C3 assimilation calculationsalpha_pr: used in Gamma_star calculationsalpha_psii: used in C4 assimilation calculationsTpcalculate_c3_assimilationfit_c3_acifit_c3_variable_jfit_c4_acicalculate_c3_limitations_grassicalculate_c3_limitations_warrenread_gasex_file function now automatically includes
the filename as a column in the resulting exdf object; this
helps with troubleshooting problematic curves or files.fit_c3_aci:
calculate_c3_variable_j,
initial_guess_c3_variable_j, and
fit_c3_variable_j.dpmn_error_jrv, dpmn_error_jrvtt,
dpmn_error_jrv_tau, dpmn_error_jrv_tpu, and
photosynthesis_TRF.DEoptim package (called
optimizer_deoptim) and renamed
default_optimizer to optimizer_nmkb. The new
optimizer_deoptim is used as the default optimizer for
variable J fitting.calculate_c3_limitations_grassi and
calculate_c3_limitations_warren.estimate_operating_point.multi_curve_line_colors and
multi_curve_point_colors) and used them in vignette
examples.fit_c3_aci and fit_c4_aci now use
estimate_operating_point to automatically estimate the
operating point and include it with the other fit parameters.calculate_iwue to calculate_wue
and provided documentation for this function, which now calculates two
measures of leaf-level water use efficiency.factorize_id_column and
converted it to an S3 method so it can be applied to data frames and
exdf objects.process_id_column function since it can
easily be replicated using paste.xyplot_avg_rc.calculate_c3_assimilation where
Rd (the value of day respiration at 25 degrees C) was used
in place of Rd_tl (the value of day respiration at the leaf
temperature) when calculating net assimilation rates.R CMD check
GitHub workflow, and a code coverage GitHub workflow.check_required_variables where missing
units in an exdf object were not properly identifiedcheck_required_variables is
functioning as expectedpdf_printcalculate_gamma_starcalculate_gm_buschcalculate_gm_ubiernacalculate_isotope_discriminationcalculate_leakiness_ubiernacalculate_ternary_correctionget_oxygen_from_preambleget_sample_valve_from_filenamepair_gasex_and_tdllicor_for_gm_site11.xslx and tdl_for_gm.dat)
for use in examples and vignettes.total_isotope_ratio was renamed to
delta_13Ctotal_mixing_ratio was renamed to
total_CO2batch_get_genotype_info_from_licor_filename).constants.R) to store the values of
some constants that appear in multiple functions; this will help ensure
that consistent values are used in each instance.read_gasex_file and
attempted to clarify instructions for selecting files to load.read_gasex_file using the
testthat package.identify_tdl_cycles and
process_tdl_cycle_polynomial so they can handle cycles
where there are multiple measurement logs from each valve.calculate_c3_assimilation and
calculate_c4_assimilation to make the code cleaner and more
robust.calculate_c3_assimilation:
alpha (previously
this value was hard-coded to 0).min_aj_cutoff and max_aj_cutoff to
cj_crossover_min and cj_crossover_max to
better reflect their purpose.fit_c3_aci and
fit_c4_aci that include the average values of
leaf-temperature-dependent parameters like Vcmax and
Rd.c3_arrhenius_no_temp and
c4_arrhenius_no_temp.plaintext_licor_file represents a plaintext Licor
LI-6800 log file.c4_aci_1.xlsx and c4_aci_2.xlsx contain
examples of C4 A-Ci curves measured with Licor LI-6800 instruments.read_gasex_file.read_gasex_file internally calls either
read_licor_6800_Excel,
read_licor_6800_plaintext, or read_CR3000 to
actually read the data from the file.read_licor_file and
read_tdl_file are now deprecated. Since these functions are
commonly used in scripts, a message will be sent to any users who
attempt to call these functions. Eventually they will be completely
removed from the package namespace.calculate_total_pressure.apply_gmcalculate_c3_assimilationcalculate_gas_propertiesfit_c3_acicalculate_cc is now apply_gm so it can be
used for C3 and C4 photosynthesis calculations.apply_gm was modified to include partial pressures in
its outputs.fit_c4_aci was modified to make it more like
fit_c3_aci.xyplot_avg_rc so that
y-axis error bars can be disabled.apply_gm so that drawdown
calculations are now optional.check_licor_data.initial_guess_c4_aci makes initial guesses for C4
photosynthetic parameters.calculate_c4_assimilation calculates assimilation
values using S. von Caemmerer’s model for C4 photosynthesis.fit_c3_aci so it now ensures that the initial
guess lies within (and not on) the bounds. This is a requirement for the
dfoptim::nmkb solver and presumably other bounded
optimizers as well.dfoptim package from Suggests to
Imports because it is used by an essential part of
PhotoGEA.check_required_variables function was moved to the
package namespace.default_optimizer).initial_guess_c3_aci).identifier_columns).residual_stats).cbind.exdf no longer requires all objects to have the
same number of rows.[<-.exdf now allows users to remove columns by
setting their values to NULL.POSIXlt in
read_tdl_file and read_licor_file can now be
skipped by setting timestamp_colname to
NA.fit_c3_aci:
curvature value that can
be used to allow co-limitation of the net assimilation rate.initial_guess_c3_aci to generate initial
guesses by default.TPU) and exclude them from the fitting process via a new
input argument called fixed.fit_ball_berry also returns residuals and error metrics
in its output.plantecophys::fitaci is
developed.fit_c3_aci.TPU in the output from
calculate_c3_assimilation.organize_response_curve_data function, changed
the default value of the ordering_column_tolerance column
to Inf to disable this check by default, since we often
want to reorder using a column like Ci that does not follow
the same sequence of values in every curve.fit_c3_aci:
min_aj_cutoff and max_aj_cutoff, which provide
a way to constrain the range of Cc where Aj is
allowed to be the limiting assimilation rate.process_tdl_cycle_polynomial) and an option for using it
in the gm_from_tdl script.calculate_c3_assimilation that was
causing it to report incorrect An values at low
Cc.Ac was misidentified as the
“RuBP-limited” rate; in fact, it is the RuBP-saturated rate but is more
commonly referred to as the rubisco-limited rate.fit_c3_aci.licor-processing-and-analysis to
PhotoGEA.remotes::install_github.pkgdown and GitHub Pages by
using usethis::use_pkgdown_github_pages; website is now
available at https://eloch216.github.io/PhotoGEA/index.html.remove_points).choose_input_files).calculate_c3_assimilation).fit_c3_aci).exdf column values
(set_variable).calculate_arrhenius).is.exdf.organize_response_curve_data now has a specification
for points to remove rather than points to keep, because this is usually
easier to do.document_variables (formerly
specify_variables)exclude_outliersbarchart_with_errorbars (formerly
bar_wrapper)bwplot_wrapper (formerly box_wrapper)xyplot_avg_rc (formerly avg_xyplot)multi_curve_colors (formerly
default_colors)calculate_cccheck_required_variables (formerly
check_required_columns)example_data_files (and also added new files for C3
A-Ci curves)c3_arrhenius_bernacchi,
c3_arrhenius_sharkey, and
c4_arrhenius_von_caemmereradd_gm_to_licor_data_from_tableadd_gm_to_licor_data_from_valuebatch_specify_oxygenbatch_specify_respirationchoose_input_gm_table_fileread_gm_tableset_variable)fit_c3_acicalculate_c3_assimilationcalculate_cccalculate_gas_propertiescalculate_c3_assimilationcalculate_ball_berry_indexfit_ball_berryexdf objects can now be initialized from just a data
frame; in this case, units and categories will all be
NA.apply_fit_across_reps and
process_tdl_cycles have been replaced by two new
lower-level functions that offer more generality: by.exdf
and consolidate.check_response_curve_data and
check_signal_averaging_data have been consolidated into one
function: check_licor_data.exdf method for cbind has been
added.exclude_tdl_cycles and extract_tdl_valve
have been removed since they can easily be reproduced with more basic
exdf functionality.basic_stats and the “Variable J” example script have
been fixed.basic_stats and the “Variable J” example
script have been broken.1.0.0 for the first version
where all R package functions and data sets have been documented; until
then, major changes should only increase the minor version number.