Changes in PhotoGEA version 1.4.0 (2025-08-25)
CRAN release: 2025-08-25
Minor user-facing changes
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_cyclesnow 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
Oxygenrather thanoxygen(the only difference is a captialO)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_namehas changed toOxygenin all functions that have this input argumentAdvice about altering instrument log files was added to the FAQ
Changes in PhotoGEA version 1.3.4 (2025-08-02)
Note: This version was never released on CRAN
Changes in PhotoGEA version 1.3.3 (2025-06-11)
CRAN release: 2025-06-12
Minor user-facing changes
Added “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
NAwhen the fit is overparameterized; in other words, when there are not enough degrees of freedom.-
When using
read_gasex_file:Files with a
.txtextension are now assumed to beplaintextwhenfile_typeis set toAUTO.Any rows whose values are all
NAare removed; this can be bypassed via the newremove_NA_rowsargument.
Bug fixes
Fixed an error that prevented curve fits when
stats::lmreturnsNAvalues when making initial guesses forRL.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.
Changes in PhotoGEA version 1.3.2 (2025-04-08)
CRAN release: 2025-04-09
This is the first version of PhotoGEA available on CRAN.
Minor user-facing changes
- Made sure all exported functions have
valueandexamplessections in their documentation. - Specify
tz = 'America/Chicago'when pairing TDL and gas exchange data, since settingtz = 'US/Central'does not seem to work on debian. CRAN checks the package examples on debian. - Added
read_cr3000,read_licor_6800_Excel, andread_licor_6800_plaintextso they can be used in examples without needing:::.
Internal changes
- Designated most vignettes as “web only” to make the package smaller; this is important for complying with CRAN guidelines.
- Set
maxiterto 40 when usingstats::unirootto calculate confidence intervals; this saves quite a bit of time compared to the default value (1000) and prevents several examples from being flagged byR CMD checkfor taking too long to run. - Use
messageto send messages to the user inrbind.exdfrather thancatorprint. This is necessary to comply with CRAN requirements.
Changes in PhotoGEA version 1.3.0 (2025-04-04)
Minor user-facing changes
- Separated the temperature response of
Gamma_starfrom its value at 25 degrees C. With this change, several functions (includingfit_c3_aciandfit_c3_variable_j) now have separate inputs forGamma_star_at_25andGamma_star_norm. The fitting functions can now fitGamma_star_at_25rather thanGamma_star, which previously represented the value at leaf temperature. Since each set of temperature response parameters (such asc3_temperature_param_bernacchi) tends to use a different value ofGamma_star_at_25, the temperature response parameter lists now include bothGamma_star_at_25andGamma_star_norm. - Separated the temperature responses of
KcandKofrom their values at 25 degrees C, and enabled fits ofKc_at_25andKo_at_25. As withGamma_star, the temperature response parameter lists include values at 25 degrees C and the normalized temperature responses. - Added values of
alpha_j_at_25andtheta_j_at_25to the Jmax-related temperature response parameter lists. - The
calculate_gamma_starfunction now returns values ofGamma_star_tlto more clearly indicate that the values are specified at leaf temperature. - The
organize_response_curve_datafunction now only callscheck_response_curve_datawhen points are being removed, making it more flexible. - Added two new vignettes: one is for frequently asked questions (
frequent_questions.Rmd), and the other is a gallery of PhotoGEA publications (publications.Rmd). Along with this change, thepkgdownweb site was reorganized to put the PhotoGEA publications in their own tab on the main navigation bar. - Removed curvature parameters from
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. - Renamed
atp_useandnadph_usetoWj_coef_CandWj_coef_Gamma_starbecause the old names and definitions for these parameters were not accurate. - Included references to the PhotoGEA paper in several places, such as
DESCRIPTIONandREADME.md.
Changes in PhotoGEA version 1.2.0 (2025-03-12)
Minor user-facing changes
- Added a vignette with advice for Licor LI-6800 user constants.
- Added a new function for calculating values of Jmax (
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_bernacchiandjmax_temperature_param_flat. These employ polynomial temperature responses, a new type that was also added to the package via thecalculate_temperature_response_polynomialfunction. -
identify_c3_limiting_processesnow returns each co-limiting process when assimilation is co-limited. - Several functions were modified to accept
data.frameobjects in addition toexdfobjects:calculate_ball_berry_index,calculate_c3_assimilation,calculate_residuals,document_variables,identify_c3_limiting_processes, andset_variable. - Added functionality for reading user remarks to
read_licor_6800_plaintextandread_licor_6800_Excel. - Added a new input argument to
organize_response_curve_datathat enables calculations of average values for specified columns. - Improved
exdfconstruction and element access; now it is possible to provide just a few units when creating anexdfobject, and it is possible to create single-columnexdfobjects. - When calling
printorstron anexdfobject, the text printed to the terminal now explains that it was generated by converting anexdfto adata.frame. - Licor LI-6800 Excel log files must now have a sheet called
Measurements. ARemarkssheet is optional. -
factorize_id_columncan now work with other control group names besidesWT.
Bug fixes
- A bug was fixed where
Gamma_starwas sometimes accidentally removed from the outputs offit_c3_aciandfit_c3_variable_j - Optional input arguments to
calculate_c3_assimilationare checked to make sure they are supported. Going forward, any new functions with optional arguments (such ascalculate_jmax) will use this same check. - Removed
Qinfrom several functions related to C4 A-Ci curves, sinceQinis not actually needed for fitting C4 A-Ci curves.
Changes in PhotoGEA version 1.1.0 (2024-12-09)
- The parameter trust values have been changed from logical values (
TRUEorFALSE) to a numeric indicator (0, 1, or 2). These values indicate severe unreliability, potential unreliability, and full reliability, respectively. - Added several optional input arguments to
calculate_c3_assimilationthat allow variants of the FvCB model to be used:use_min_A,TPU_threshold,use_FRL, andconsider_depletion. These can also be specified when fitting curves. - The behavior of
identify_c3_unreliable_ptswas modified to make it compatible with the newuse_min_Aoption. - A new option was added to
remove_points, allowing users to exclude points from any subsequent fits rather than completely removing them.-
plot_c3_aci_fitand the other fit plotting functions have been altered to distinguish between points included in or excluded from the fit. -
xyplot_avg_rchas been altered to exclude such points when calculating average values
-
- Outliers can now be excluded automatically when creating a barchart using
barchart_with_errorbars - More information is now included in the output from
fit_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). - A function was added for fitting the Medlyn conductance model (as an alternative to the Ball-Berry model):
fit_medlyn - Update input argument checks for several functions:
check_required_columnsandset_variable - The system for specifying temperature response parameters and calculating temperature-dependent values of key photosynthetic parameters has been been revamped to make it more flexible and easier to use:
-
calculate_arrheniusandcalculate_peaked_gaussianhave been renamed tocalculate_temperature_response_arrheniusandcalculate_temperature_response_gaussianto better reflect their purpose. - A new type of temperature response has been added:
calculate_temperature_response_johnson. - When calculating C3 assimilation rates or fitting C3 A-Ci curves,
Tpis now specified at 25 degrees C and follows a temperature response function, as was already done forVcmax,J, andRL. - When calculating C4 assimilation rates or fitting C4 A-Ci curves,
Jmaxis now specified at 25 degrees C, rather than at its optimum value, for consistency with the other parameters that can be fit in PhotoGEA. - A central function for calculating temperature responses has been added:
calculate_temperature_response. It internally calls the other functions, so users can just use this single function. - The
c4_arrhenius_von_caemmererandc4_peaked_gaussian_von_caemmererhave been consolidated into a single list suitable for use withcalculate_temperature_response, caledc4_temperature_param_vc. - The
c3_arrhenius_sharkeyandc3_arrhenius_bernacchilists now include Johnson-Eyring-Williams reponses forTpandgmcand have been renamed toc3_temperature_param_sharkeyandc3_temperature_param_bernacchisince they are no longer pure list of Arrhenius parameters. - These changes may not be compatible with scripts written for earlier versions of PhotoGEA.
-
-
read_licor_6800_Excelnow checks to make sure theAandgswcolumns 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. - The C3 assimilation model and C3 A-Ci fits have been updated to include:
- Another parameter related to TPU (
alpha_t) - Mesophyll conductance (
gmc_at_25)
- Another parameter related to TPU (
- The C4 A-Ci fits have also been updated to include mesophyll conductance (
gmc_at_25) and to fitJrather thanJmax. - Revamped the Laisk fitting function:
- Renamed the function from
calculate_RL_laisktofit_laisksince a fitting procedure is used, and the method also estimatesCi_starin addition toRL. - Used the method described in Walker & Ort (2015) and Busch et al. (2024)
- Added a plotting function for displaying the results of a Laisk fit:
plot_laisk_fit.
- Renamed the function from
- AIC calculations were moved to
residual_statsso the AIC can be more easily calculated for fits from other packages. - Added a new optimizer (
optimizer_nlminb) and improved the optimizer documentation and testing. The new optimizer is a wrapper forstats::nlminband employs a quasi-Newton algorithm. - Added a new function for identifying limiting processes in C3 curves:
identify_c3_limiting_processes. This function is used internally byfit_c3_aciandfit_c3_variable_j. - A new option was added to Variable J fits:
check_j
Changes in PhotoGEA version 1.0.0 (2024-08-13)
- A new fitting function was added:
fit_c4_aci_hyperbola. This allows users to fit an empirical hyperbola to C4 A-Ci curves, rather than the mechanistic model used infit_c4_aci.- Several supporting functions were also added:
calculate_c4_assimilation_hyperbola,confidence_intervals_c4_aci_hyperbola,error_function_c4_aci_hyperbola,initial_guess_c4_aci_hyperbola, andplot_c4_aci_hyperbola_fit. - Tests were also added for
fit_c4_aci_hyperbolaandcalculate_c4_assimilation_hyperbola
- Several supporting functions were also added:
- Added a new control option so users can set or bypass hard constraints on parameter values when calculating assimilation rates
- The input is called
hard_constraintsand it takes a numerical value, where higher values impose more constraints on parameter values. The highest value is 2. - Setting
hard_constraintsto 2 is equivalent to the default behavior in previous versions of PhotoGEA. - The default value in all functions that take it as an input is 0, which imposes no hard constraints.
- It has been added to
calculate_c3_assimilation,calculate_c3_variable_j,calculate_c4_assimilation, andcalculate_c4_assimilation_hyperbola, as well as any functions that use these internally, such ascalculate_c3_limitations_warrenandfit_c3_aci.
- The input is called
- The default bounds for all the curve fitting functions have been expanded to avoid biasing the results.
- Confidence limits for parameters at leaf temperature have been added.
- Options for identifying and removing unreliable parameter estimates have been added. With this change, the
remove_unreliable_paraminput argument must now be a numeric value rather than a logical value.- A value of 0 disables this feature (equivalent to
FALSEin previous versions of PhotoGEA). - A value of 1 removes parameters (and their corresponding rates) if the corresponding rate is never the smallest rate.
- A value of 2 removes parameters (and their corresponding rates) if the corresponding rate is never the smallest rate, and removes parameters if the the upper confidence limit is infinity (equivalent to
TRUEin previous versions of PhotoGEA). - The default value for all functions that have this option is 2.
- A value of 0 disables this feature (equivalent to
- A warning was removed from
fit_c4_aci, which had previously suggested to avoid fitting more than one ofVcmax_at_25,Vpr, andJmax_at_opt. - The default value of the
require_positive_gmcinput argument of thefit_c3_variable_jfunction has been changed topositive_a. - The names of respiration rates were changed:
Rd(the rate of day respiration) has been changed toRL(the rate of respiration in the light) andRm(the rate of day respiration occurring in the mesophyll) has been changed toRLm(the rate of respiration in the light occurring in the mesophyll). The subscriptLfor “light” is more clear thandfor “day,” since in some contextsdrefers to “dark.” One function name was modified during this process:calculate_rd_laiskbecamecalculate_RL_laisk. - The
basic_statsfunction was updated so it can ignoreNAvalues when calculating averages and standard errors. - The
check_response_curve_datafunction was updated so there is now an option to create a warning rather than an error message when a problem is detected. - The
estimate_operating_pointfunction was updated so a value ofNAfor theCa_atmosphericinput simply bypasses the operating point calculations. Along with this, the default value forCa_atmosphericwas set toNAin thefit_c3_aci,fit_c3_variable_j, andfit_c4_acifunctions. With these changes, calculating the operating point is now optional. - The C3 and C4 A-Ci vignettes were updated to remove some outdated information and to take advantage of the new fitting function
fit_c4_aci_hyperbola. - Increased minimum required R version from
3.6.0to4.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.
Changes in PhotoGEA version 0.12.0 (2024-06-03)
- Changed fitting method from least-squares to maximum likelihood in
fit_c3_aci,fit_c3_variable_j, andfit_c4_aci.- We use a normal distribution for calculating the likelihood.
- Best-fit parameter values are determined with
sigma = 1. - Then the true value of the likelihood can be estimated using
sigma = RMSE. - Confidence intervals are also calculated using
sigma = RMSE. - Fitting functions include the Akaike information criterion (AIC) in their outputs
- Default settings have been changed to always calculate confidence intervals and remove unreliable parameter estimates, to use a more reliable (but slower) optimizer, and to fit
alpha_old(for C3 A-Ci and Variable J fits); these settings will ensure more robust fitting results
- Changed the C3 assimilation and Variable J equations to accommodate the new alpha parameters from Busch et al. (2018)
- There are now three separate parameters:
alpha_old(previouslyalpha_g),alpha_g, andalpha_s - If
alpha_oldis nonzero, thenalpha_gandalpha_smust be zero. Likewise, ifalpha_goralpha_sis nonzero, thenalpha_oldmust be zero. This will prevent users from mixing the two models together.
- There are now three separate parameters:
- The fitting functions
fit_c3_aci,fit_c3_variable_j, andfit_c4_acinow include a new output calledfits_interpolatedthat contains values of the predicted assimilation rates with aCistep of 1 ppm. - New plotting functions have been added:
plot_c3_aci_fitandplot_c4_aci_fit. These functions use the new information infits_interpolatedto make nice plots comparing the measured data and the fits. - Now users can optionally ignore
NAvalues when usingxyplot_avg_rcandbarchart_with_errorbars - Changed
exclude_outliersto make sure it doesn’t excludeNAvalues - Specialized functions for writing
exdfobjects toCSVfiles and recreatingexdfobjects from those files are now available:write.csv.exdfandread.csv.exdf. - When determining the degree of trust in a best-fit parameter value, we now consider parameters with an upper confidence limit of
Infto be unreliable. - Light- and electron-limited assimilation has been added to
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. - New fitting parameters have been added to
fit_c4_aci:alpha_psii,gbs,Jmax_at_optandRm_frac. - It is now possible to remove unreliable parameter estimates when using
fit_c4_aci. - Tests have been updated to make sure the fitting functions can gracefully handle a fit failure, even when estimating confidence intervals and/or removing unreliable parameter estimates.
- Added a new optimizer (
optimizer_hjkb) and changed their default arguments so a user must always specify the tolerance or number of generations. - All functions that require an O2 partial pressure now calculate it from the total pressure and the oxygen concentration (expressed as a percentage).
- A new option has been added to
read_licor_6800_Excelandread_licor_6800_plaintext:get_oxygen. When this input isTRUE,get_oxygen_from_preamblewill automatically be used to get the oxygen percentage from the file’s preamble when it is loaded. - A new option has been added to
read_gasex_file:standardize_columns. -
read_licor_6800_plaintextcan now read log files that were closed and reopened - Added a new function called
PhotoGEA_example_file_pathto avoid usingsystem.filein examples sincesystem.pathhas been confusing for some users -
check_licor_datahas been renamed tocheck_response_curve_datasince it is not limited to only Licor measurements - Specified a minimum supported R version:
3.6.0.
Changes in PhotoGEA version 0.11.0 (2024-02-12)
- Added new options for adding penalties to the error function during Variable J fits, that enable the user to selectively penalize negative or unreasonably large values of mesophyll conductance.
- Made a few improvements to C3 curve fitting functions (
fit_c3_aciandfit_c3_variable_j):- Two more parameters can now be fit:
alpha(related to TPU) andGamma_star. - Unreliable parameter estimates can now be excluded; for example, if no points on a curve have An = Ap, the fit will return NA for TPU.
- The initial guess functions (
initial_guess_c3_aciandinitial_guess_c3_variable_j) can now accommodate user-supplied values ofalpha.
- Two more parameters can now be fit:
- Made a few improvements to all three nonlinear fitting functions (
fit_c3_aci,fit_c3_variable_j, andfit_c4_aci):- The error functions are now available in the package namespace as
error_function_c3_aci,error_function_c3_variable_j, anderror_function_c4_aci. - Confidence intervals around the best-fit values can now be calculated automatically by the fitting functions, or manually using three new functions in the package namespace:
confidence_intervals_c3_aci,confidence_intervals_c3_variable_j, andconfidence_intervals_c4_aci. - The initial guess functions are now created internally instead of being an input argument.
- There is a new system for supplying fit options (upper and lower bounds, and which parameters to fit):
- Users now only need to specify changes from the default settings.
- The order of parameters no longer matters because lists of named elements are used.
- Parameters that could be fit, but are not being fit, can either be set to fixed values or to values from a column of an exdf object.
- Unknown parameters are now provided in alphabetical order when applicable (such as the first input arguments to
calculate_c3_assimilation).
- The functions are more tolerant to curves with severe problems (such as negative Ci) that prevent a good fit from being found; rather than throwing an error, the fit functions now silently return
NAfor all results, along with a message explaining the issue.
- The error functions are now available in the package namespace as
- Added a function for estimating
Rdwith the Laisk method:calculate_rd_laisk - A “unit dictionary” was added for internal use; this may be expanded and used more often in the future.
- Renamed several variables and input arguments:
- Licor files contain a column called
alpha, and several different “alphas” were used throughoutPhotoGEA. To avoid confusion, the values inPhotoGEAwere renamed as follows:-
alpha_g: used in C3 assimilation calculations -
alpha_pr: used in Gamma_star calculations -
alpha_psii: used in C4 assimilation calculations
-
- The acronym “TPU” was used to refer to a process (triose phosphate utilization) and the maximum rate of that process. To avoid confusion, the rate parameter was renamed to
Tp
- Licor files contain a column called
- Tests were added for several functions:
calculate_c3_assimilationfit_c3_acifit_c3_variable_jfit_c4_acicalculate_c3_limitations_grassicalculate_c3_limitations_warren
- The
read_gasex_filefunction now automatically includes the filename as a column in the resultingexdfobject; this helps with troubleshooting problematic curves or files. - PRs related to creating this version:
Changes in PhotoGEA version 0.10.0 (2023-12-16)
- Reorganized the variable J fitting functions to be more like
fit_c3_aci:- Added
calculate_c3_variable_j,initial_guess_c3_variable_j, andfit_c3_variable_j. - Removed
dpmn_error_jrv,dpmn_error_jrvtt,dpmn_error_jrv_tau,dpmn_error_jrv_tpu, andphotosynthesis_TRF.
- Added
- Added a new optimizer from the
DEoptimpackage (calledoptimizer_deoptim) and renameddefault_optimizertooptimizer_nmkb. The newoptimizer_deoptimis used as the default optimizer for variable J fitting. - Added two new functions for calculating the relative limiting factors of C3 photosynthesis:
calculate_c3_limitations_grassiandcalculate_c3_limitations_warren. - Added a new function for estimating the operating point from a measured A-Ci curve:
estimate_operating_point. - Added two new color specifications (
multi_curve_line_colorsandmulti_curve_point_colors) and used them in vignette examples. -
fit_c3_aciandfit_c4_acinow useestimate_operating_pointto automatically estimate the operating point and include it with the other fit parameters. - The C3 and C4 A-Ci vignettes now show include the operating point in one of the figures.
- Renamed
calculate_iwuetocalculate_wueand provided documentation for this function, which now calculates two measures of leaf-level water use efficiency. - Provided documentation for
factorize_id_columnand converted it to an S3 method so it can be applied to data frames and exdf objects. - Removed the
process_id_columnfunction since it can easily be replicated usingpaste. - Stopped reversing colors in
xyplot_avg_rc. - Fixed a typo in
calculate_c3_assimilationwhereRd(the value of day respiration at 25 degrees C) was used in place ofRd_tl(the value of day respiration at the leaf temperature) when calculating net assimilation rates. - Added some developer documentation, an
R CMD checkGitHub workflow, and a code coverage GitHub workflow. - PRs related to creating this version:
- https://github.com/eloch216/PhotoGEA/pull/77
- https://github.com/eloch216/PhotoGEA/pull/78
- https://github.com/eloch216/PhotoGEA/pull/79
- https://github.com/eloch216/PhotoGEA/pull/80
- https://github.com/eloch216/PhotoGEA/pull/81
- https://github.com/eloch216/PhotoGEA/pull/82
- https://github.com/eloch216/PhotoGEA/pull/83
- https://github.com/eloch216/PhotoGEA/pull/84
Changes in PhotoGEA version 0.9.2 (2023-11-16)
- Fixed a bug in
check_required_variableswhere missing units in anexdfobject were not properly identified - Added tests to make sure
check_required_variablesis functioning as expected - PRs related to creating this version:
Changes in PhotoGEA version 0.9.1 (2023-11-13)
- Added logo to package and documentation
- PRs related to creating this version:
Changes in PhotoGEA version 0.9.0 (2023-10-25)
- Added a new convenience function for printing plot objects:
pdf_print - Added and/or documented several functions related to isotope discrimination measurements:
calculate_gamma_starcalculate_gm_buschcalculate_gm_ubiernacalculate_isotope_discriminationcalculate_leakiness_ubiernacalculate_ternary_correctionget_oxygen_from_preambleget_sample_valve_from_filenamepair_gasex_and_tdl
- Added two new example data files (
licor_for_gm_site11.xslxandtdl_for_gm.dat) for use in examples and vignettes. - Renamed some variables related to isotope measurements; the new terms are more consistent with the way these quantities are typically described:
-
total_isotope_ratiowas renamed todelta_13C -
total_mixing_ratiowas renamed tototal_CO2
-
- Removed a function that was specific to one user (
batch_get_genotype_info_from_licor_filename). - Added a new R file (
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. - Improved some error handling in
read_gasex_fileand attempted to clarify instructions for selecting files to load. - Added two basic tests of
read_gasex_fileusing thetestthatpackage. - PRs related to creating this version:
Changes in PhotoGEA version 0.8.0 (2023-04-30)
- Modified
identify_tdl_cyclesandprocess_tdl_cycle_polynomialso they can handle cycles where there are multiple measurement logs from each valve. - Added several functions for calculating quadratic roots; these are not exported in the package namespace, but are now used in
calculate_c3_assimilationandcalculate_c4_assimilationto make the code cleaner and more robust. - Other updates to
calculate_c3_assimilation:- Choose a minimal RuBP carboxylation rate rather than a minimal net CO2 assimilation rate.
- Allow the user to specify a value of
alpha(previously this value was hard-coded to 0). - Allow the user to specify two separate curvature values when including co-limitation.
- Renamed
min_aj_cutoffandmax_aj_cutofftocj_crossover_minandcj_crossover_maxto better reflect their purpose.
- PRs related to creating this version:
Changes in PhotoGEA version 0.7.1 (2023-01-11)
- Added new outputs from
fit_c3_aciandfit_c4_acithat include the average values of leaf-temperature-dependent parameters likeVcmaxandRd. - Added options for specifying a flat temperature response when fitting C3 or C4 A-Ci curves; these are available via the two new data sets
c3_arrhenius_no_tempandc4_arrhenius_no_temp. - PRs related to creating this version:
Changes in PhotoGEA version 0.7.0 (2022-12-19)
- Added new example files:
-
plaintext_licor_filerepresents a plaintext Licor LI-6800 log file. -
c4_aci_1.xlsxandc4_aci_2.xlsxcontain examples of C4 A-Ci curves measured with Licor LI-6800 instruments.
-
- Made several significant changes to functions that read data from log files:
- Added the ability to read plaintext Licor LI-6800 log files.
- Consolidated all file-reading functions into a single one called
read_gasex_file. - Depending on user-supplied inputs that specify the instrument and file type,
read_gasex_fileinternally calls eitherread_licor_6800_Excel,read_licor_6800_plaintext, orread_CR3000to actually read the data from the file. - When loading LI-6800 Excel log files, it is no longer necessary to provide information about the preamble and data rows.
- The previous reading functions
read_licor_fileandread_tdl_fileare 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.
- Made significant changes to the way pressure values are handled:
- Added a new function that calculates the total pressure inside a Licor chamber from the separate values of ambient pressure and the chamber overpressure:
calculate_total_pressure. - Modified several other functions to just expect a value of total pressure rather than separate values of ambient pressure and chamber overpressure, since this system for storing pressure values is just an artifact of Licor log files:
apply_gmcalculate_c3_assimilationcalculate_gas_propertiesfit_c3_aci
- Added a new function that calculates the total pressure inside a Licor chamber from the separate values of ambient pressure and the chamber overpressure:
- Renamed or modified several other functions:
-
calculate_ccis nowapply_gmso it can be used for C3 and C4 photosynthesis calculations. -
apply_gmwas modified to include partial pressures in its outputs. -
fit_c4_aciwas modified to make it more likefit_c3_aci. - Added a new input argument to
xyplot_avg_rcso that y-axis error bars can be disabled. - Added a new input argument to
apply_gmso that drawdown calculations are now optional. - Improved some of the error messages generated by
check_licor_data. - Included ATP and NADPH usage in the C3 assimilation calculations.
-
- Added several other new functions:
-
initial_guess_c4_acimakes initial guesses for C4 photosynthetic parameters. -
calculate_c4_assimilationcalculates assimilation values using S. von Caemmerer’s model for C4 photosynthesis.
-
- Added a new vignette demonstrating how to analyze C4 A-Ci curve data.
- PRs related to creating this version:
Changes in PhotoGEA version 0.6.1 (2022-11-01)
- Modified
fit_c3_aciso it now ensures that the initial guess lies within (and not on) the bounds. This is a requirement for thedfoptim::nmkbsolver and presumably other bounded optimizers as well. - PRs related to creating this version:
Changes in PhotoGEA version 0.6.0 (2022-10-06)
- Moved the
dfoptimpackage fromSuggeststoImportsbecause it is used by an essential part ofPhotoGEA. - The
check_required_variablesfunction was moved to the package namespace. - Added and/or documented several functions:
- A default optimizer function (
default_optimizer). - A function for guessing for C3 parameter values (
initial_guess_c3_aci). - A function for identifying columns that take a single unique value (
identifier_columns). - A function that calculates error metrics from the values of residuals, including the root mean squared error (RMSE) and several others (
residual_stats).
- A default optimizer function (
- Small changes were made to several functions:
-
cbind.exdfno longer requires all objects to have the same number of rows. -
[<-.exdfnow allows users to remove columns by setting their values toNULL. - The conversion of the timestamp column to
POSIXltinread_tdl_fileandread_licor_filecan now be skipped by settingtimestamp_colnametoNA.
-
- Significant changes have been made to
fit_c3_aci:- It now has an option to set a
curvaturevalue that can be used to allow co-limitation of the net assimilation rate. - It now uses
initial_guess_c3_acito generate initial guesses by default. - It now has an option to fix certain parameter values (such as
TPU) and exclude them from the fitting process via a new input argument calledfixed. - Its output now includes residuals and error metrics such as the RMSE.
- It now has an option to set a
-
fit_ball_berryalso returns residuals and error metrics in its output. - Two new vignettes were added:
- “Creating Your Own Processing Tools” discusses the best practices for writing custom functions for processing. As an example, a function for fitting a rectangular hyperbola to an A-Ci curve is developed.
- “Combining PhotoGEA With Other Packages” discusses best practices for writing wrappers for processing tools from other packages. As an example, a wrapper for
plantecophys::fitaciis developed.
- Several other vignettes were modified:
- The “Analyzing C3 A-Ci Curves” vignette has been updated to include the new features of
fit_c3_aci. - The “Developing a Data Analysis Pipeline” vignette has been updated to include the new functions added in this version.
- The “Working With Extended Data Frames” vignette has been updated to include some new diagrams.
- The “Getting Started With PhotoGEA” vignette has been updated to include links to the new vignettes.
- The “Analyzing C3 A-Ci Curves” vignette has been updated to include the new features of
- PRs related to creating this version:
Changes in PhotoGEA version 0.5.0 (2022-09-16)
- Added a new vignette demonstrating how to analyze C3 A-Ci curve data.
- Included
TPUin the output fromcalculate_c3_assimilation. - In the
organize_response_curve_datafunction, changed the default value of theordering_column_tolerancecolumn toInfto disable this check by default, since we often want to reorder using a column likeCithat does not follow the same sequence of values in every curve. - Added new input arguments to
fit_c3_aci:min_aj_cutoffandmax_aj_cutoff, which provide a way to constrain the range ofCcwhereAjis allowed to be the limiting assimilation rate. - Added new function for calibrating TDL data (
process_tdl_cycle_polynomial) and an option for using it in thegm_from_tdlscript. - Modified Licor-TDL pairing to stop assuming a particular relationship between the sample and reference valve numbers.
- Fixed an issue with
calculate_c3_assimilationthat was causing it to report incorrectAnvalues at lowCc. - Fixed several typos where
Acwas 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. - Added a new example script that uses
fit_c3_aci. - PRs related to creating this version:
Changes in PhotoGEA version 0.4.0 (2022-09-07)
- Made several improvements to accessibility:
- Renamed GitHub repository from
licor-processing-and-analysistoPhotoGEA. - Made GitHub repository public, which allows for a simpler installation via
remotes::install_github. - Initialized website using
pkgdownand GitHub Pages by usingusethis::use_pkgdown_github_pages; website is now available at https://eloch216.github.io/PhotoGEA/index.html.
- Renamed GitHub repository from
- Made minor improvements to the Ball-Berry vignette:
- Added a stability check.
- Made the stats calculations more clear.
- Added new functions to the package namespace:
- A function for excluding data points (
remove_points). - A cross-platform file selection tool (
choose_input_files). - A function for calculating C3 assimilation rates (
calculate_c3_assimilation). - A function for fitting C3 CO2 response curves (
fit_c3_aci). - A function for setting
exdfcolumn values (set_variable). - A function for calculating Arrhenius exponents (
calculate_arrhenius).
- A function for excluding data points (
- Modified the behavior of several functions:
- Added an option for a more thorough check in
is.exdf. -
organize_response_curve_datanow has a specification for points to remove rather than points to keep, because this is usually easier to do.
- Added an option for a more thorough check in
- Added documentation for several code objects:
-
document_variables(formerlyspecify_variables) exclude_outliers-
barchart_with_errorbars(formerlybar_wrapper) -
bwplot_wrapper(formerlybox_wrapper) -
xyplot_avg_rc(formerlyavg_xyplot) -
multi_curve_colors(formerlydefault_colors) calculate_cc-
check_required_variables(formerlycheck_required_columns) -
example_data_files(and also added new files for C3 A-Ci curves) -
c3_arrhenius_bernacchi,c3_arrhenius_sharkey, andc4_arrhenius_von_caemmerer
-
- Removed several limited-use functions from the package namespace:
add_gm_to_licor_data_from_tableadd_gm_to_licor_data_from_valuebatch_specify_oxygenbatch_specify_respirationchoose_input_gm_table_fileread_gm_table- (All of these functions can be replicated with
set_variable)
- Added new vignettes:
- A vignette describing how to work with extended data frames.
- A vignette describing how to develop a data analysis pipeline.
- A vignette introducing new users to PhotoGEA.
- Started supplying default column names in several functions to make code shorter:
fit_c3_acicalculate_c3_assimilationcalculate_cccalculate_gas_propertiescalculate_c3_assimilationcalculate_ball_berry_indexfit_ball_berry
- PRs related to creating this version:
Changes in PhotoGEA version 0.3.0 (2022-08-15)
- This version adds a substantial amount of documentation, including a vignette describing how to use PhotoGEA to analyze TDL data.
- While working on documentation, several changes were made to key functions so they behaved more reasonably and became easier to document.
- Changes to functions and their documentation includes:
-
exdfobjects can now be initialized from just a data frame; in this case, units and categories will all beNA. -
apply_fit_across_repsandprocess_tdl_cycleshave been replaced by two new lower-level functions that offer more generality:by.exdfandconsolidate. -
check_response_curve_dataandcheck_signal_averaging_datahave been consolidated into one function:check_licor_data. - An
exdfmethod forcbindhas been added. -
exclude_tdl_cyclesandextract_tdl_valvehave been removed since they can easily be reproduced with more basic exdf functionality. - All functions for creating or modifying Excel files have been removed since we no longer want to follow this strategy.
-
-
basic_statsand the “Variable J” example script have been fixed.
Changes in PhotoGEA version 0.2.0 (2022-07-26)
- This version adds a substantial amount of documentation, including a vignette describing how to use PhotoGEA to analyze Ball-Berry data.
- While working on documentation, several changes were made to key functions so they behaved more reasonably and became easier to document.
- At the moment,
basic_statsand the “Variable J” example script have been broken.
Changes in PhotoGEA version 0.1.0
- This is the first version of PhotoGEA. At this point, the package is in a state of rapid development, and not all changes will be described here.
- We are reserving version
1.0.0for 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.