Quantum yield efficiency of photosynthesis
Run this notebook
Read the guide on setting up your computer to run Jupyter notebooks
Download
this notebookas a Jupyter notebook.
Warning
Note that \(\phi_0\) is also sometimes used to refer to the quantum yield of electron transfer, which is exactly four times larger than the quantum yield of photosynthesis.
The value of \(\phi_0\) captures the conversion rate of moles of photosynthetically active photons into moles of \(\ce{CO2}\). There is some disagreement about the theoretical maximum for \(\phi_0\) (Long et al., 1993):
8 moles of photons are needed when calculations are based on NADPH requirements, giving \(\phi_0 = 1/8\), but
9 moles of photons are needed when calculations are based on ATP requirements, giving \(\phi_0=1/9\).
These theoretical maxima are typically modified when calculating light use efficiency to capture limitations on achieving the theoretical maximum yield:
The values of \(\phi_0\) are often adjusted to include other components of light capture. For example, Stocker et al. (2020) include a factor for incomplete leaf absorptance in their estimation of \(\phi_0\) and argue that \(\phi_0\) should be treated as a parameter representing canopy-scale effective quantum yield.
The maximum quantum yield can vary with environmental conditions, such as temperature variation in \(\phi_0\) (Bernacchi et al., 2003).
For these reasons, the PModel provides alternative
approaches to estimating the value of \(\phi_{0}\), using the method_kphio argument. The
currently implemented approaches are described below.
Most of the approaches currently share the same baseline reference value of \(\phi_{0}=
1/8\) as the theoretical maximum quantum yield of photosynthesis. The default value can
be set using the
PModelConst.maximum_phi0
attribute, which can then be passed into a
PModelEnvironment. However, the PModel and
SubdailyPModel both provide the reference_kphio argument to override the default
value for a specific model. This can be needed when specific methods have been
calibrated using a ‘tuned’ value for \(\phi_0\): an example here is the soil moisture
stress corrected GPP estimates of Stocker et al. (2020) which use different \(\phi_0\)
values (see calculate_soilmstress_stocker()).
Temperature dependent \(\phi_0\)
The default approach (method_kphio='temperature',
QuantumYieldTemperature) applies a temperature
dependent estimate of \(\phi_0\), following Bernacchi et al. (2003) for C3 plants and
Cai and Prentice (2020) for C4 plants.
Fixed \(\phi_0\)
This approach (method_kphio='fixed',
QuantumYieldFixed) applies a fixed value of
\(\phi_0\) in the calculation of light use efficiency.
However, the fixed method will also accept \(\phi_0\) values for each observation being fitted in the PModel. This option is provided to allow users to experiment with alternative per-observation estimation of \(\phi_0\) that are not currently implemented. You will need to provide an array of values that has the same shape as the other driver variables and these values are then used within the calculations for each observation.
In the code and plot below, this approach is used to provide a simple linear series of \(\phi_0\) values to an otherwise constant environment. As you would expect given \(\text{LUE} = \phi_0 \cdot M_C \cdot m_j\), light use efficiency changes linearly along this gradient of \(\phi_0\) values.
/home/docs/checkouts/readthedocs.org/user_builds/pyrealm/checkouts/latest/pyrealm/pmodel/pmodel.py:481: UserWarning:
The default value for quantum yield of photosynthesis (phi0=1/8) has changed
since pyrealm 1.0.0. You may need to change settings to duplicate results
from pyrealm 1.0.0.
warn(
Temperature and aridity effects on \(\phi_0\)
Warning
This approach is parameterised from data and uses a fixed estimate of maximum \(\phi_0
\approx 1/9\). You cannot alter the maximum value using the reference_kphio argument.
Sandoval et al. (2026) implemented a new method (method_kphio='sandoval',
QuantumYieldSandoval),
where \(\phi_0\) is calculated as a function of a local aridity index
(calculated as PET / P), the mean growth temperature and the air temperature
(Sandoval et al., 2026). You will need to provide the aridity index and mean growing
temperature for observations when creating the PModelEnvironment.
First, the aridity index is used to adjust the reference value (\(\phi_{0R}\)) using a double exponential function to calculate a new maximum value given the climatological aridity (\(\phi_{0A}\)):
This captures a decrease in maximum \(\phi_0\) in arid conditions, as shown below.
/home/docs/checkouts/readthedocs.org/user_builds/pyrealm/checkouts/latest/pyrealm/core/experimental.py:72: ExperimentalFeatureWarning: 'Be aware that QuantumYieldSandoval is an experimental feature of pyrealm and the implementation and API may change within major versions.'
warn(qualname, ExperimentalFeatureWarning)
In addition to capping the peak \(\phi_0\) as a function of the aridity index, the method also captures how plants adjust peak efficiency to their conditions. A peaked Arrhenius model is used to calculate the realised \(\phi_0\) given both the current temperature and the mean growth temperature (\(T_g\)) for observations. The plot below shows how aridity and mean growth temperature interact to change the location and height of the peak \(\phi_0\) and how realised \(\phi_0\) at a temperature varies given the mean growth temperature.