4 物种名录构建:APG分类系统、分类学核对、同义词处理

构建物种名录这事,说难不难,说简单也真容易踩坑。我刚开始做植物群落调查时,拿着《中国植物志》对着野外记录一条条核对,觉得挺靠谱。结果一跑多样性分析,出来的结果莫名其妙——后来才发现,同一个物种在不同年份的文献里,属名、命名人都能差出一大截。

今天咱们就把这件事捋清楚。一份干净的名录,背后就三件事:选对分类框架、做好分类学核对、处理掉同义词。少一步,后面的功能特征分析都白搭。

物种名录构建核心流程 选择分类系统 APG IV / 传统分类 分类学核对 有效名 vs 异名/别名 同义词处理 合并、映射、标记 统一名录表 关键原则 • 选择单一分类系统并全程保持一致 • 每一条记录都保留原始学名 + 标准化有效名 • 同义词处理需标注来源(如:TPL、WCVP、POWO)

4.1 为什么要用 APG 分类系统?

传统的分类系统(比如 Engler 系统、Cronquist 系统)主要靠形态特征来划分类群。但植物的形态有时候会骗人——亲缘关系很远的两类植物,可能因为趋同进化长得特别像。

APG 系统(被子植物系统发育研究组)就不一样了。它基于 DNA 序列,使用分子系统学方法重建演化树。说白了,就是看基因,不看长相。我现在做植被分析,除非是历史数据对接需要,否则一律默认使用 APG IV。

特征传统分类系统APG IV 系统
依据形态特征(花、果实、叶片)DNA 序列(多为叶绿体基因)
稳定性易受趋同进化误导高,反映真实演化关系
属级变动相对稳定部分属被拆分或合并
科级变动科界限模糊科大多为单系群
推荐场景历史文献对比、标本馆数据现代生态学研究、功能特征分析
我的经验:如果你研究的是中国亚热带森林,直接选 APG IV + Flora of China 的命名系统。我在一篇大样地论文里就吃过亏——用传统系统跑完了功能多样性,审稿人直接让重跑 APG 版本。后来我把数据的分类系统字段单独存了一列,每次提交都注明用了哪个版本。

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)
避坑指南:我曾经一次性核对了 300 条名录,结果忘了检查命名人字段。两个物种学名一模一样,但命名人不同,其实是两个不同分类群。后来我强制在比对时加上命名人字段,才堵住这个漏洞。

第三步:标记状态。每条记录打上标签:

  • Accepted — 有效名,直接保留
  • Synonym — 异名,需映射到有效名
  • Unresolved — 未处理,需要人工核查
  • Misapplied — 误用名,例如鉴定错误

4.3 同义词处理:把异名统一成有效名

同义词处理可能是名录构建里最烦人的一步。一个物种可能有几个甚至几十个异名。举个实际例子:

原始记录中的名称状态标准化有效名
Rhododendron simsii Planch.AcceptedRhododendron simsii
Rhododendron pulchrum SweetSynonymRhododendron simsii
Azalea indica L.SynonymRhododendron simsii
Rhododendron × hybridumAccepted (栽培种)Rhododendron × hybridum

你看,同一朵花,在不同文献里被叫作三个名字。如果不做同义词映射,多样性分析会把它当成三个独立物种,结果就彻底偏了。

处理同义词的核心原则只有一条:以权威数据库的最新有效名为准,建立映射表。我通常的做法是:

  1. 从 POWO / WFO 下载该属或该科的同义词列表(CSV)
  2. 用 Python 做 fuzzy join,匹配原始名录
  3. 人工检查标灰的未匹配项,一般占 5-10%
  4. 将映射表合并回名录,保留原始名字一列作为溯源

完整的名录表结构模板:

| 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,再人工过一遍。
特别提醒:同义词处理不要贪多求全。碰到一个异名在三个数据库里都查不到,别死磕,直接标记为 unresolved。统计时会排除这些记录,总比强行映射造成污染要好。我曾经为了追求 100% 映射,把一个未定种强行匹配到近缘种,结果后续的功能特征聚类把两个完全不同功能型的东西混在了一起,分析报废了一整章。

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 分类系统给你一个稳定的框架,分类学核对帮你剔除错误,同义词处理把碎片接合起来。这三步走完,你的分析才经得起推敲。