18  Rd 呼吸 相关

本节标题的翻译足够让我头大,Farquhar, Caemmerer, 和 Berry (1980) 对 Rd 的解释为:

The symbol Rd represents CO2 evolution from mitochondria in the light, other than that associated with the PCO cycle. Mitochondrial oxygen uptake and electron transport associated with normal dark respiration are likely to be inhibited by illumination but CO2 release may continue. For want of a better term we call this “dark respiration”.

然而我不喜欢这个叫法,感觉容易误解。本文的主要目的是使用 photosynthesis 来计算有光条件下呼吸,软件包对这个过程的叫法叫做 light respiration,具体说是两个参数,具体的翻译我采用了 X. Yin 和 Struik (2009) 的表述:

  1. R_d:通常称之为明呼吸速率,是指无光呼吸的 CO_2 释放。
  2. \Gamma^*:在无光呼吸的情况下的基于 C_cCO_2 补偿点。

我作为非专业人士,若觉得我写错了或者难以难以理解,请参考文献原文。

18.1 Laisk 方法概述

Laisk 方法参考的文献为 Brooks 和 Farquhar (1985),基本实验方法和原则是:

在不同的低光条件下测量 CO_2 响应曲线(例如该文采用了四个低光条件),这样寻找这几个响应曲线的交点,也就是四条曲线 A 值相同的点,然后采用该 A 值下的 C_i 值作为对 \Gamma^* 的估计,而 A 值则作为对 -R_d 的估计。

采用的 C_i 范围较小,此范围内响应曲线是近线性的,每个光强下的响应曲线采用的是线性拟合。他们的交点是通过计算获得,从而计算上面的 \Gamma^*-R_d

当然这篇文献里还提到的 R_n,这是和 R_d 相对的概念,是我们通常称为暗呼吸速率的参数。测量方式是当光源关闭后,呼吸速率快速下降,然后在 30-45 min 的黑暗处理后,该速率基本停止后作为暗呼吸速率。

Walker 和 Ort (2015) 给出了上述方式的示意图:

Figure 18.1: Laisk 方法示例

上面的图形使用的是三项式拟合的结果。

18.1.1 基本计算方法

Walker 和 Ort (2015) 对于交点的判定给出了详细论述,如上图所示,这几条曲线(或最初的线性)并不是总会完全相交于一点。通常采用的方法是将所有曲线(或直线)的交点进行取均值。实践中,这些点很少收敛于单点,通常移除某交点或重新测量直到交点的标准差在某范围内。但总之会存在一定缺陷,因而 Walker 和 Ort (2015) 对上述方法做了一个改变:

C_i^* = \frac{b1-b2}{m_2 -m_1} \tag{18.1}

其中 C_i^* 的意义为上文提到的计算的 \Gamma^*, m 表示两条响应曲线线性部分的直线的斜率,b 表示截距。之后再进行计算:

R_d = m C_i^* + b \tag{18.2}

该方法的基本步骤是:

  1. 将每条曲线的 m 值作为 x 轴,b 值作为 y 轴,那么对其做一个标准的线性回归,这条回归线的斜率为:

m_{reg} = \frac{b_2-b_1}{m_2 -m_1} \tag{18.3}

将其乘以 -1,并整理方程,那么我们可以得到下面的公式:

b=-C_i^* + b_{reg} \tag{18.4}

那么:

R_d = b_{reg} \tag{18.5}

18.2 Kok 方法

由于 Kok (1956) 的方法是基于氧气的测量,尽管原则一样,但我不想浪费精力学习现在基本抛弃的测量方式,所以下面的描述基于 Way 等 (2019)

Kok 方法基于在弱光 ( \lt 100 \mu mol \cdot m^{-2} \cdot m^{-1} ) 下测量净光合速率。当光强从低到高渐变时,净光合速率增加,但这个增加的斜率通常存在一个中断。计算 R_d 通常是基于该中断代表了从 R_n 到光下对 R_n 的已知阶段。因此 R_d 可以通过拟合高于该断点的数据点并进行差值后与 y 轴的交点来表示。如下图作者测量了不同温度下的 R_d:

Figure 18.2: Kok 方法示例

当然该方法存在争论,但是他的测量比较简单,争论内容不在本文讨论之列。

18.3 Yin 方法

Xinyou Yin 等 (2011) 使用 LI-6400 进行光合荧光同步测量来进行,光强的设置为:

5,10,15,20,30,50,70,100,150,200 设置 Ca 的浓度为 370 \mu mol \cdot mol,但外界的 O_2 浓度为 2%。并且为验证光强设置的方向是否影响 R_d,单独进行了正向和反向的光强实验。荧光测量遵循了 LI-6400 的测量原则。

Figure 18.3: Yin 方法测量 Rd 示例

R_d 的计算使用了上图的方法,与 Kok 类似,不过横坐标的数值为 \Phi PSII/4。该方法只适用于改进的 R_d 的计算。

18.4 函数简介

实际上有三个函数,但他们有共同的参数,道理很简单,他们基于的理论大部分相同:

Code
fit_r_light_kok(
  data,
  varnames = list(A_net = "A_net", PPFD = "PPFD"),
  PPFD_lower = 40,
  PPFD_upper = 100
)

fit_r_light_WalkerOrt(
  data,
  varnames = list(A_net = "A_net", C_i = "C_i", PPFD = "PPFD"),
  P = 100,
  C_i_threshold = 300
)

fit_r_light_yin(
  data,
  varnames = list(A_net = "A_net", PPFD = "PPFD", phi_PSII = "phi_PSII"),
  PPFD_lower = 40,
  PPFD_upper = 100
)

主要的参数,我们通过上面的介绍部分都能看明白,分别是适用于 LI-6400 或 LI-6800 的 varnames,以及最小光强或者最大光强,外界气压 P,以及部分方法中 C_i 的临界点 C_i_threshold

18.5 实践

实践还是采用叶肉导度测试的数据,来自于软件包自带。代码来自于 vignette,主要对其中内容做相关解释。

Code
library(photosynthesis)
data <- read.csv('data/A_Ci_Q_data_1.csv')

加载软件包并读取示例数据。

Code
r_light <- fit_r_light_yin(
  data = data,
  varnames = list(
    A_net = "A",
    PPFD = "Qin",
    phi_PSII = "PhiPS2"
  ),
  PPFD_lower = 20,
  PPFD_upper = 250
)

R_d 为截距:

Code
r_light
(Intercept) 
 -0.7721399 

当然,Kok 方法与之类似:

Code
r_light <- fit_r_light_kok(
  data = data,
  varnames = list(
    A_net = "A",
    PPFD = "Qin",
    phi_PSII = "PhiPS2"
  ),
  PPFD_lower = 20,
  PPFD_upper = 250
)
r_light
(Intercept) 
 -0.5237011 

结果为负值当然表示这是呼吸的意思。

示例程序还演示了不同分组的数据批量的处理,这里的分组是使用了 sample 气路的二氧化碳浓度,首先将其取整,然后转化为 factor 后处理,也就是前两行代码所做的处理。之后使用 Yin 的方法将所有分组的数据同时处理;

Code
data$C_s <- (round(data$CO2_s, digits = 0))
data$C_s <- as.factor(round(data$C_s, digits = -1))


r_lights <- fit_many(
  data = data,
  funct = fit_r_light_yin,
  group = "C_s",
  varnames = list(
    A_net = "A",
    PPFD = "Qin",
    phi_PSII = "PhiPS2"
  ),
  PPFD_lower = 20,
  PPFD_upper = 250
)

  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |========                                                              |  11%
  |                                                                            
  |================                                                      |  22%
  |                                                                            
  |=======================                                               |  33%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |===============================================                       |  67%
  |                                                                            
  |======================================================                |  78%
  |                                                                            
  |==============================================================        |  89%
  |                                                                            
  |======================================================================| 100%

然后将数据整理一下:

Code
group <- names(r_lights)
r_lights <- do.call("c", r_lights)
r_light_yin <- data.frame(x = group, y = r_lights, stringsAsFactors = FALSE)
r_light_yin$x <- as.numeric(r_light_yin$x)
colnames(r_light_yin) <- c("C_s", "r_light")

首先提取不同的分组,这里是浓度的数据,然后将其转化为一个向量。最终将数据整理为一个数据框,第一列是分组名,第二列是对应的截距,或者说是 R_d。最后将数据框的表头修改为所需要的表头,结果为:

Table 18.1: Yin 的方法测量的结果
C_s r_light
50.(Intercept) 50 -0.4795729
100.(Intercept) 100 -0.5840415
200.(Intercept) 200 -0.6015973
300.(Intercept) 300 -0.7388560
410.(Intercept) 410 -0.7800892
600.(Intercept) 600 -0.6269801
820.(Intercept) 820 -0.7022602
1200.(Intercept) 1200 -0.5198403
1600.(Intercept) 1600 -0.3685110

walker 方法相比来说要复杂一些,因为多求了一个参数:

Code
walker_ort <-
  fit_r_light_WalkerOrt(data, varnames = list(A_net = "A", C_i = "Ci", PPFD = "Qin"))

summary(walker_ort[[1]])

Call:
lm(formula = Intercept ~ Slope, data = coefs)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.36114 -0.10958 -0.05553  0.08166  0.62016 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -0.1526     0.1176  -1.297    0.224    
Slope        -4.6004     0.4069 -11.307  5.1e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2513 on 10 degrees of freedom
Multiple R-squared:  0.9275,    Adjusted R-squared:  0.9202 
F-statistic: 127.8 on 1 and 10 DF,  p-value: 5.103e-07

通过图形才能很好的反应他使用单条线的斜率和截距来计算的情况:

Code
walker_ort[[2]]
Figure 18.4: 图形方式查看 Walker 的测量方法

数据的结果:

Table 18.2: Walker 的方法测量的结果
GammaStar r_light
Slope 46.00427 -0.152643

就是这些内容了,属于比较使用的函数。