利用 BP 程序实现 RACiR 数据的测试

2020-12-24 13:44:30, 祝介东 北京力高泰科技有限公司/基因有限公司农业环境部


可能是去年底使用了  Coursolle et al. (2019) 这样的方法修改后,进行 RACiR 数据的分析,这次是对其做了修改。

其实年初就已经使用 LI-6800 的 BP 程序,将测量方法自动化,并修改了一下  Coursolle et al. (2019) 的方法,不记录最初稳定二氧化碳的数据,因为他的数据中,下图三角形区域的数据是完全无用的,不需要记录。

这种方式使原来的方式进行直接批量删除是不可取的。容易出错或者残留无效数据。针对这个情况我进行的修改和测试为:使用 BP 进行测量,目前我已经完成 BP 相关的程序,本节的示例则是基于我实测的验证数据来进行(相关测试已经录好视频,可能后面公司公众号会推,如有 BP 自动测量 RACiR 的需要,请跟我们公司联系)。这个程序也是基于 @Coursolle12019 的方法,测量步骤和修改如下:

  1. 在接近外界的  浓度下进行诱导,控制 reference 的  420 ppm ,控制水分 reference 为 20 此处不做修改。

  2. 使用自动控制,在 2 min 时间内,将    的 reference 气路浓度,下降到 20,然后等待 10-15 s 的时间。此处的修改为,不记录这些数据,减少数据处理的麻烦。 例如上图中三角形区域的数据。

  3. 运行自动控制,将  的 reference 浓度由 20 上升到 1520 ppm (仅作为测试范围,并非绝对),本步骤不做修改,记录数据,此为所需要数据。

实际上主要的修改就是将这个步骤自动化,需要人为操作的步骤仅仅是点 start 按键启动整个测量。

对于软件包的修改:

主要的修改:

  • 独立的 xls_read 函数用于读取 excel 格式数据并修改叶面积。

  • 独立的“清洗”空叶室数据的函数 tidy_data_empty

  • 独立的“清洗"带叶片测量数据的函数 tidy_data

  • 将数据的清洗使用 A 值的一个上限和一个下限来解决。

使用的方法如下(有使用标准 ACi 测量数据的比较内容):

查看相邻数据的差值设置

数据的清洗其实比较简单,主要利用相邻的两个测量 A 值的差值来进行,为方便确定差值,针对空叶室和带叶片测量的数据,单独设定了两个函数,来确定合理的过滤范围,这样说太抽象,我们导入数据后直接看图:

1. 导入数据:

此函数本质上是 xlconnect_read,如无需修改叶面积,则使用默认值。如果需要修改叶面积,需要输入 S 参数,叶面积修改值必须和 A 的值一一对应,否则因为叶面积错误,则导致其他的错误,例如上面修改叶面积为原来的一半:

library(racir)
library(plantecophys)

empty <- xls_read("data/racir-empty.xlsx")
leaf <- xls_read("data/racir-leaf.xlsx")

#  标准的aci数据
aci <- xls_read("data/aci-curve.xlsx")

half_leaf <- xls_read("data/racir-leaf.xlsx", S = leaf$S/2)
head(half_leaf$A/leaf$A)
tail(half_leaf$A/leaf$A)

修改面积仅作演示用,如无需修改,则不要输入面积选项。

2. 关于空叶室的数据过滤范围的选取:

check_delta_empty(empty, delta_max = 0.5, lower_A = -1)


这里首先不要被第二幅图的波动所迷惑,主要是坐标轴差异太小。然后第一幅图中,这里设定了一个最大最小光合速率的范围(阈值,upper_A 和 lower_A),默认最大值是 2 以及最小值是 -2,上面我使用了最小值为 -1,也就是删除小于 -1 的光合速率,最大值 2 并不是删除,二是寻找 -2 < A < 2 范围的数据,从这里面找一个最小值,保留这一行的数据到测量数据结束。另一个阈值删除相邻两个A值过大差值的数据的阈值(delta_max),对于这个阈值,LI-6800 其实并不敏感,因为本身数据非常稳定。

3. 关于带叶片测量的数据过滤范围的选取:

check_delta(leaf, delta_max = 0.5, lower_A = -1)


带叶片的数据同上,没有特殊的参数,从右图的数据来看,他在修正之前的光合速率,符合我们的预期。

4. 确定范围后数据的清洗:

tidy_leaf <- tidy_data(leafdelta_max = 0.5, lower_A = -1)
tidy_empty <- tidy_data_empty(emptydelta_max = 0.5, lower_A = -1)

### 修正带叶片测量数据
z <- correct_leaf(tidy_emptytidy_leaf)

4. 拟合后的数据:

fit_racir <- fitaci(z,
               varnames =
                 list(
                   ALEAF = "A",
                   Tleaf = "Tleaf",
                   Ci = "Ci",
                   PPFD  = "Qin",
                   Rd = "Rd"
                ))
fit_normal <- fitaci(aci,
               varnames =
                 list(
                   ALEAF = "A",
                   Tleaf = "Tleaf",
                   Ci = "Ci",
                   PPFD  = "Qin",
                   Rd = "Rd"
                 ))

ACi 曲线作图:

RACiR 作图:

当然,拟合重合度是非线性拟合的原因,与测量无关。

RAiR 的结果:

ACi 的结果:

此处的数据和视频里的数据以及函数的参数略有差别,因为我修改了一下 racir 软件包的过滤条件,使得筛选数据更符合要求。本身因为不是同一时间测量,测量 RACiR 时叶片的气孔导度略到,因此,其略大符合预期。

数据的重合程度 (实际上 RACiR 数据点要浓密的多,我使用了透明度为 80%,这样看上去仍然颜色非常深,这是 RACiR 采集数据点达到几百个的原因。ACi 测量点为 50-2000 ppm,RACiR 为 20-1520 ppm):

library(RColorBrewer)
library(latex2exp)

line_col <- brewer.pal(2,"Set1")

racir_col <- scales::alpha(line_col[1], 0.2)
aci_col <- line_col[2]

plot(
  z$Ci,
  z$A,
  cex = 2.3,
  col = racir_col,
  pch = 20,
  xlim = c(50, 1400),
  ylim = c(-1, 38),
  xlab = TeX(''$C_i$ $(\\\\mu mol \\\\cdot mol^{-1})$''),
  ylab = TeX(''A $(\\\\mu mol \\\\cdot mol^{-1})$'')
)
points(aci$Ci,
       aci$A,
       cex = 2.3,
       col = aci_col,
       pch = 20)

legend(
  10,
  35,
  legend = c("RACiR","ACi"),
  col = c(racir_col, aci_col),
  pch = 20,
  bty = "n",
  pt.cex = 2.3
)




在线版本同步更新:


http://zhu_jie_dong.gitee.io/photoanalysis/

https://zhujiedong.github.io/photoanalysis/



  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018
  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018

Copyright ©2007-2026 ANTPEDIA, All Rights Reserved