Changes in PhotoGEA version 1.3.2 (2024-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
value
andexamples
sections 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_plaintext
so 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
maxiter
to 40 when usingstats::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 byR CMD check
for taking too long to run. - Use
message
to send messages to the user inrbind.exdf
rather thancat
orprint
. This is necessary to comply with CRAN requirements.
Changes in PhotoGEA version 1.3.0 (2024-04-04)
Minor user-facing changes
- Separated the temperature response of
Gamma_star
from its value at 25 degrees C. With this change, several functions (includingfit_c3_aci
andfit_c3_variable_j
) now have separate inputs forGamma_star_at_25
andGamma_star_norm
. The fitting functions can now fitGamma_star_at_25
rather 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_25
andGamma_star_norm
. - Separated the temperature responses of
Kc
andKo
from their values at 25 degrees C, and enabled fits ofKc_at_25
andKo_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_25
andtheta_j_at_25
to the Jmax-related temperature response parameter lists. - The
calculate_gamma_star
function now returns values ofGamma_star_tl
to more clearly indicate that the values are specified at leaf temperature. - The
organize_response_curve_data
function now only callscheck_response_curve_data
when 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, thepkgdown
web 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_use
andnadph_use
toWj_coef_C
andWj_coef_Gamma_star
because the old names and definitions for these parameters were not accurate. - Included references to the PhotoGEA paper in several places, such as
DESCRIPTION
andREADME.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_bernacchi
andjmax_temperature_param_flat
. These employ polynomial temperature responses, a new type that was also added to the package via thecalculate_temperature_response_polynomial
function. -
identify_c3_limiting_processes
now returns each co-limiting process when assimilation is co-limited. - Several functions were modified to accept
data.frame
objects in addition toexdf
objects: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_plaintext
andread_licor_6800_Excel
. - Added a new input argument to
organize_response_curve_data
that enables calculations of average values for specified columns. - Improved
exdf
construction and element access; now it is possible to provide just a few units when creating anexdf
object, and it is possible to create single-columnexdf
objects. - When calling
print
orstr
on anexdf
object, the text printed to the terminal now explains that it was generated by converting anexdf
to adata.frame
. - Licor LI-6800 Excel log files must now have a sheet called
Measurements
. ARemarks
sheet is optional. -
factorize_id_column
can now work with other control group names besidesWT
.
Bug fixes
- A bug was fixed where
Gamma_star
was sometimes accidentally removed from the outputs offit_c3_aci
andfit_c3_variable_j
- Optional input arguments to
calculate_c3_assimilation
are checked to make sure they are supported. Going forward, any new functions with optional arguments (such ascalculate_jmax
) will use this same check. - Removed
Qin
from several functions related to C4 A-Ci curves, sinceQin
is 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 (
TRUE
orFALSE
) 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_assimilation
that 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_pts
was modified to make it compatible with the newuse_min_A
option. - 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_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 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_columns
andset_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_arrhenius
andcalculate_peaked_gaussian
have been renamed tocalculate_temperature_response_arrhenius
andcalculate_temperature_response_gaussian
to 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,
Tp
is 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,
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. - 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_caemmerer
andc4_peaked_gaussian_von_caemmerer
have been consolidated into a single list suitable for use withcalculate_temperature_response
, caledc4_temperature_param_vc
. - The
c3_arrhenius_sharkey
andc3_arrhenius_bernacchi
lists now include Johnson-Eyring-Williams reponses forTp
andgmc
and have been renamed toc3_temperature_param_sharkey
andc3_temperature_param_bernacchi
since 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_Excel
now checks to make sure theA
andgsw
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. - 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 fitJ
rather thanJmax
. - Revamped the Laisk fitting function:
- Renamed the function from
calculate_RL_laisk
tofit_laisk
since a fitting procedure is used, and the method also estimatesCi_star
in 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_stats
so 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::nlminb
and 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_aci
andfit_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_hyperbola
andcalculate_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_constraints
and it takes a numerical value, where higher values impose more constraints on parameter values. The highest value is 2. - Setting
hard_constraints
to 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_warren
andfit_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_param
input argument must now be a numeric value rather than a logical value.- A value of 0 disables this feature (equivalent to
FALSE
in 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
TRUE
in 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_gmc
input argument of thefit_c3_variable_j
function 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 subscriptL
for “light” is more clear thand
for “day,” since in some contextsd
refers to “dark.” One function name was modified during this process:calculate_rd_laisk
becamecalculate_RL_laisk
. - The
basic_stats
function was updated so it can ignoreNA
values when calculating averages and standard errors. - The
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. - The
estimate_operating_point
function was updated so a value ofNA
for theCa_atmospheric
input simply bypasses the operating point calculations. Along with this, the default value forCa_atmospheric
was set toNA
in thefit_c3_aci
,fit_c3_variable_j
, andfit_c4_aci
functions. 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.0
to4.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_old
is nonzero, thenalpha_g
andalpha_s
must be zero. Likewise, ifalpha_g
oralpha_s
is nonzero, thenalpha_old
must 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_aci
now include a new output calledfits_interpolated
that contains values of the predicted assimilation rates with aCi
step of 1 ppm. - New plotting functions have been added:
plot_c3_aci_fit
andplot_c4_aci_fit
. These functions use the new information infits_interpolated
to make nice plots comparing the measured data and the fits. - Now users can optionally ignore
NA
values when usingxyplot_avg_rc
andbarchart_with_errorbars
- Changed
exclude_outliers
to make sure it doesn’t excludeNA
values - Specialized functions for writing
exdf
objects toCSV
files and recreatingexdf
objects from those files are now available:write.csv.exdf
andread.csv.exdf
. - When determining the degree of trust in a best-fit parameter value, we now consider parameters with an upper confidence limit of
Inf
to 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_opt
andRm_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_Excel
andread_licor_6800_plaintext
:get_oxygen
. When this input isTRUE
,get_oxygen_from_preamble
will 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_plaintext
can now read log files that were closed and reopened - Added a new function called
PhotoGEA_example_file_path
to avoid usingsystem.file
in examples sincesystem.path
has been confusing for some users -
check_licor_data
has been renamed tocheck_response_curve_data
since 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_aci
andfit_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_aci
andinitial_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
NA
for 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
Rd
with 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 inPhotoGEA
were 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_assimilation
fit_c3_aci
fit_c3_variable_j
fit_c4_aci
calculate_c3_limitations_grassi
calculate_c3_limitations_warren
- The
read_gasex_file
function now automatically includes the filename as a column in the resultingexdf
object; 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
DEoptim
package (calledoptimizer_deoptim
) and renameddefault_optimizer
tooptimizer_nmkb
. The newoptimizer_deoptim
is 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_grassi
andcalculate_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_colors
andmulti_curve_point_colors
) and used them in vignette examples. -
fit_c3_aci
andfit_c4_aci
now useestimate_operating_point
to 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_iwue
tocalculate_wue
and provided documentation for this function, which now calculates two measures of leaf-level water use efficiency. - Provided documentation for
factorize_id_column
and converted it to an S3 method so it can be applied to data frames and exdf objects. - Removed the
process_id_column
function since it can easily be replicated usingpaste
. - Stopped reversing colors in
xyplot_avg_rc
. - Fixed a typo in
calculate_c3_assimilation
whereRd
(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 check
GitHub 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_variables
where missing units in anexdf
object were not properly identified - Added tests to make sure
check_required_variables
is 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_star
calculate_gm_busch
calculate_gm_ubierna
calculate_isotope_discrimination
calculate_leakiness_ubierna
calculate_ternary_correction
get_oxygen_from_preamble
get_sample_valve_from_filename
pair_gasex_and_tdl
- Added two new example data files (
licor_for_gm_site11.xslx
andtdl_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_ratio
was renamed todelta_13C
-
total_mixing_ratio
was 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_file
and attempted to clarify instructions for selecting files to load. - Added two basic tests of
read_gasex_file
using thetestthat
package. - PRs related to creating this version:
Changes in PhotoGEA version 0.8.0 (2023-04-30)
- Modified
identify_tdl_cycles
andprocess_tdl_cycle_polynomial
so 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_assimilation
andcalculate_c4_assimilation
to 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_cutoff
andmax_aj_cutoff
tocj_crossover_min
andcj_crossover_max
to 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_aci
andfit_c4_aci
that include the average values of leaf-temperature-dependent parameters likeVcmax
andRd
. - 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_temp
andc4_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_file
represents a plaintext Licor LI-6800 log file. -
c4_aci_1.xlsx
andc4_aci_2.xlsx
contain 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_file
internally calls eitherread_licor_6800_Excel
,read_licor_6800_plaintext
, orread_CR3000
to 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_file
andread_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.
- 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_gm
calculate_c3_assimilation
calculate_gas_properties
fit_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_cc
is nowapply_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 likefit_c3_aci
. - Added a new input argument to
xyplot_avg_rc
so that y-axis error bars can be disabled. - Added a new input argument to
apply_gm
so 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_aci
makes initial guesses for C4 photosynthetic parameters. -
calculate_c4_assimilation
calculates 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_aci
so it now ensures that the initial guess lies within (and not on) the bounds. This is a requirement for thedfoptim::nmkb
solver 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
dfoptim
package fromSuggests
toImports
because it is used by an essential part ofPhotoGEA
. - The
check_required_variables
function 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.exdf
no longer requires all objects to have the same number of rows. -
[<-.exdf
now allows users to remove columns by setting their values toNULL
. - The conversion of the timestamp column to
POSIXlt
inread_tdl_file
andread_licor_file
can now be skipped by settingtimestamp_colname
toNA
.
-
- Significant changes have been made to
fit_c3_aci
:- It now has an option to set a
curvature
value that can be used to allow co-limitation of the net assimilation rate. - It now uses
initial_guess_c3_aci
to 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_berry
also 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::fitaci
is 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
TPU
in the output fromcalculate_c3_assimilation
. - In the
organize_response_curve_data
function, changed the default value of theordering_column_tolerance
column toInf
to disable this check by default, since we often want to reorder using a column likeCi
that does not follow the same sequence of values in every curve. - Added new input arguments to
fit_c3_aci
:min_aj_cutoff
andmax_aj_cutoff
, which provide a way to constrain the range ofCc
whereAj
is 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_tdl
script. - Modified Licor-TDL pairing to stop assuming a particular relationship between the sample and reference valve numbers.
- Fixed an issue with
calculate_c3_assimilation
that was causing it to report incorrectAn
values at lowCc
. - Fixed several typos where
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. - 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-analysis
toPhotoGEA
. - Made GitHub repository public, which allows for a simpler installation via
remotes::install_github
. - Initialized website using
pkgdown
and 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
exdf
column 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_data
now 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_table
add_gm_to_licor_data_from_value
batch_specify_oxygen
batch_specify_respiration
choose_input_gm_table_file
read_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_aci
calculate_c3_assimilation
calculate_cc
calculate_gas_properties
calculate_c3_assimilation
calculate_ball_berry_index
fit_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:
-
exdf
objects can now be initialized from just a data frame; in this case, units and categories will all beNA
. -
apply_fit_across_reps
andprocess_tdl_cycles
have been replaced by two new lower-level functions that offer more generality:by.exdf
andconsolidate
. -
check_response_curve_data
andcheck_signal_averaging_data
have been consolidated into one function:check_licor_data
. - An
exdf
method forcbind
has been added. -
exclude_tdl_cycles
andextract_tdl_valve
have 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_stats
and 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_stats
and 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.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.