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.