4 物种名录构建:APG分类系统、分类学核对、同义词处理
构建物种名录这事,说难不难,说简单也真容易踩坑。我刚开始做植物群落调查时,拿着《中国植物志》对着野外记录一条条核对,觉得挺靠谱。结果一跑多样性分析,出来的结果莫名其妙——后来才发现,同一个物种在不同年份的文献里,属名、命名人都能差出一大截。
今天咱们就把这件事捋清楚。一份干净的名录,背后就三件事:选对分类框架、做好分类学核对、处理掉同义词。少一步,后面的功能特征分析都白搭。
4.1 为什么要用 APG 分类系统?
传统的分类系统(比如 Engler 系统、Cronquist 系统)主要靠形态特征来划分类群。但植物的形态有时候会骗人——亲缘关系很远的两类植物,可能因为趋同进化长得特别像。
APG 系统(被子植物系统发育研究组)就不一样了。它基于 DNA 序列,使用分子系统学方法重建演化树。说白了,就是看基因,不看长相。我现在做植被分析,除非是历史数据对接需要,否则一律默认使用 APG IV。
| 特征 | 传统分类系统 | APG IV 系统 |
|---|---|---|
| 依据 | 形态特征(花、果实、叶片) | DNA 序列(多为叶绿体基因) |
| 稳定性 | 易受趋同进化误导 | 高,反映真实演化关系 |
| 属级变动 | 相对稳定 | 部分属被拆分或合并 |
| 科级变动 | 科界限模糊 | 科大多为单系群 |
| 推荐场景 | 历史文献对比、标本馆数据 | 现代生态学研究、功能特征分析 |
4.2 分类学核对:从原始名录到标准名录
拿到一份野外名录,里面可能包含:有效学名、异名、拼写错误、未定种(sp.)、甚至只有中文名。要做的事就三步。
第一步:确定参考源。我个人习惯优先使用这三个数据库:
- Plants of the World Online (POWO) — Kew 维护,更新及时,覆盖面广
- World Flora Online (WFO) — 全球植物分类协作平台
- 中国植物志 + Flora of China — 中文区域的标准参考
第二步:逐条核对。写个简单的 R 或者 Python 脚本去比对。不会写脚本的话,至少用 Excel 的 VLOOKUP 把数据拉过来。
# Python 示例:使用 py-taxon 库批量核对(伪代码)
import taxon # 虚构库名,实际可用 Kew 的 API
species_list = ["Rhododendron simsii", "Rhododendron pulchrum", "Azalea indica"]
for name in species_list:
result = taxon.lookup(name, source="powo")
print(result.accepted_name, result.status)
第三步:标记状态。每条记录打上标签:
- Accepted — 有效名,直接保留
- Synonym — 异名,需映射到有效名
- Unresolved — 未处理,需要人工核查
- Misapplied — 误用名,例如鉴定错误
4.3 同义词处理:把异名统一成有效名
同义词处理可能是名录构建里最烦人的一步。一个物种可能有几个甚至几十个异名。举个实际例子:
| 原始记录中的名称 | 状态 | 标准化有效名 |
|---|---|---|
| Rhododendron simsii Planch. | Accepted | Rhododendron simsii |
| Rhododendron pulchrum Sweet | Synonym | Rhododendron simsii |
| Azalea indica L. | Synonym | Rhododendron simsii |
| Rhododendron × hybridum | Accepted (栽培种) | Rhododendron × hybridum |
你看,同一朵花,在不同文献里被叫作三个名字。如果不做同义词映射,多样性分析会把它当成三个独立物种,结果就彻底偏了。
处理同义词的核心原则只有一条:以权威数据库的最新有效名为准,建立映射表。我通常的做法是:
- 从 POWO / WFO 下载该属或该科的同义词列表(CSV)
- 用 Python 做 fuzzy join,匹配原始名录
- 人工检查标灰的未匹配项,一般占 5-10%
- 将映射表合并回名录,保留原始名字一列作为溯源
完整的名录表结构模板:
| original_name | accepted_name | family | genus | author | status | source |
|-------------------------------|-----------------------------|--------------|--------------|-------------|-----------|----------|
| Rhododendron pulchrum Sweet | Rhododendron simsii Planch. | Ericaceae | Rhododendron | Planch. | synonym | POWO |
| Azalea indica L. | Rhododendron simsii Planch. | Ericaceae | Rhododendron | Planch. | synonym | WFO |
| Rhododendron simsii Planch. | Rhododendron simsii Planch. | Ericaceae | Rhododendron | Planch. | accepted | POWO |
4.4 实操中常见的三个坑
下面这几个问题,我在不同项目里至少各碰到过一次。写出来大家少走弯路。
- 坑一:科级的变动。APG IV 里很多科被合并或拆分。比如传统的虎耳草科(Saxifragaceae)被拆成多个小科。如果你的名录用的是传统系统,直接套 APG 的科级功能特征库,可能出错。我的做法:保留两个科的字段——原始科 + APG 科。
- 坑二:命名人缩写不一致。"L."、"Linn."、"Linnaeus" 是同一个人。如果比对时不留心,会导致误判。我习惯用正则把命名人标准化后再做匹配。
- 坑三:拼写错误和变体。"Rhododendron simsii" 有时候写成 "Rhododendron simsii Planch.",有时候漏了空格,甚至少了字母。我常用 difflib 或者 agrep 做模糊匹配,阈值设 0.95,再人工过一遍。
4.5 自动化工具与工作流
如果名录量级超过 100 条,建议上脚本。我自己的标配是:
- R 包:taxize — 对接 ITIS、GBIF、COL 等十余个数据库,适合批量查询
- Python 库:py-taxa — 轻量,速度快,配合 pandas 直接操作数据框
- 命令行工具:taxoncheck — 适合在 Linux 服务器上跑
# 使用 taxize 在 R 中批量同义词处理示例
library(taxize)
my_species <- c("Rhododendron pulchrum", "Azalea indica", "Rosa chinensis")
out <- gnr_resolve(names = my_species, data_source_ids = c(1, 11)) # 1 = ITIS, 11 = COL
out[, c("user_supplied_name", "matched_name", "data_source_title")]
小技巧:写个 Makefile 或者 shell 脚本,把流程自动化。我常用的模式:
# Makefile 片段
all: mapping.csv
mapping.csv: raw_list.csv
python3 build_mapping.py --input raw_list.csv --output mapping.csv --source powo
clean:
rm -f mapping.csv *~
这样每次只要更新原始名录,跑 make 就行,不用手点 Excel。
4.6 最终输出什么样?
一份合格的名录,至少包含以下要素:
- 每一条记录都有唯一的标准化有效学名
- 附加上分类阶元(科、属、种)
- 保留原始名称、来源数据库、状态标记
- 若用于功能特征计算,建议加上功能型分组字段
我自己的名录头部通常长这样:
original_name,accepted_name,family,genus,status,source,functional_group
Rhododendron pulchrum,Rhododendron simsii,Ericaceae,Rhododendron,synonym,POWO,wood
Azalea indica,Rhododendron simsii,Ericaceae,Rhododendron,synonym,WFO,wood
Rhododendron simsii,Rhododendron simsii,Ericaceae,Rhododendron,accepted,POWO,wood
Quercus alba,Quercus alba,Fagaceae,Quercus,accepted,POWO,tree
Prunus serrulata,Prunus serrulata,Rosaceae,Prunus,accepted,WFO,tree
有了这样的名录,后面的功能特征查表、多样性计算、群落排序,才能靠谱。不然——数据进去,垃圾出来。
一句话总结:名录构建是数据科学的基石。APG 分类系统给你一个稳定的框架,分类学核对帮你剔除错误,同义词处理把碎片接合起来。这三步走完,你的分析才经得起推敲。