用plantlist程序包查询和处理植物学名 (plantlist 0.6.5)

plantlist包简介

plantlist是用来查询和处理植物学名的R程序包,自2013年发布以来,受到很多老师和同学的关注。

plantlist的主要功能

  1. 批量查询植物科属,内置的数据主要来源于The Plant List网站 ( www.theplantlist.org/ ),其中被子植物采用APGIII分类系统,同时提供维管植物每个科的编号,可用于植物标本管理,方便编纂植物名录等。
  2. 直接生成科/属/种的列表, 以便导入Phylomatic, V.PhyloMaker等软件生成进化树
  3. 用中文名批量查询植物学名以及科属
  4. 查询学名的接受状态以及完整学名等
  5. 制作不同风格的中文植物名录Markdown源文件

类似的程序包或网站

R软件中,类似的程序包还有:

网站有:

相比之下,plantlist的主要特点在于:

  1. 使用校对过的内置数据,使用过程中不需要连网。
  2. 优化了查询单个物种名是否为接受名的算法,速度更快
  3. 查询结果所显示的信息更加简洁清晰
  4. 支持用中文名批量查询学名

plantlist包内的函数

  • TPL() 用学名查询目、科、属以及科在分类系统中的编号
  • taxa.table() 基于TPL查询结果制作科、属、种列表,以便用Phylomatic软件建立进化树
  • status() 查询每个学名在The Plant List 1.1数据库中的接受状态(该数据库已经放在程序包中)
  • CTPL() 查询中国记录植物的科、属、分布、海拔、IUCN等级等
  • count_taxa 统计CTPL查询结果出现的科、属、种等数量
  • make_checklist 根据CTPL的查询结果,制作三种风格的植物名录(按照系统发育顺序排列)

内置数据

  • acc_dat: The Plant List 1.1 网站上的所有接受名
  • cnplants_dat: 《中国植物名录》及每个种的科、属、分布、海拔、中国IUCN等级以及特有性等数据
  • genera_dat: The Plant List 1.1 网站上的所有属名列表,因源数据有一些错误,绝大部分已经修订。
  • orders_dat: Angiosperm Phylogeny Website (www.mobot.org/MOBOT/research/APweb/) 提供的各科所属的目。
  • syn_dat: The Plant List 1.1 网站的异名数据库

安装

由于plantlist最新版本的源代码保存在github (https://www.github.com/helixcn/plantlist)。

安装命令如下:

1
2
install.packages("remotes")
remotes::install_github("helixcn/plantlist", build_vignettes = TRUE)

用法

TPL():根据拉丁名,查询目、科、属及科的编号

TPL函数输入的数据必须是字符串向量。可以查询科、属、种的相应信息,但并不会提示学名是否为接受名。要查询学名是否为接受名,请用status()函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
library(plantlist)
## This is plantlist 0.6.5.
TPL("Carex") # 薹草属
## YOUR_SEARCH POSSIBLE_GENUS FAMILY FAMILY_NUMBER ORDER GROUP
## 1 Carex Carex Cyperaceae APGIII_099 Poales Angiosperms
TPL("Apple") # 苹果
## YOUR_SEARCH POSSIBLE_GENUS FAMILY FAMILY_NUMBER ORDER GROUP
## 1 Apple Apple <NA> <NA> <NA> <NA>
splist <- c("Ranunculus japonicus",
"Solanum nigrum",
"Punica sp.",
"Machilus",
"Today",
"####" )
### 查询多个种
res <- TPL(splist)

taxa.table() :基于TPL查询结果制作科、属、种列表

查询结果多用于Phylomatic或V.PhyloMaker等软件构建进化树。示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
library(plantlist)
sp <- c( "Ranunculus japonicus",
"Anemone udensis",
"Ranunculus repens",
"Ranunculus chinensis",
"Solanum nigrum",
"Punica sp." )
res <- TPL(sp)
taxa.table(res)
## [1] "Ranunculaceae/Ranunculus/Ranunculus_japonicus"
## [2] "Ranunculaceae/Ranunculus/Ranunculus_repens"
## [3] "Ranunculaceae/Ranunculus/Ranunculus_chinensis"
## [4] "Ranunculaceae/Anemone/Anemone_udensis"
## [5] "Solanaceae/Solanum/Solanum_nigrum"
## [6] "Lythraceae/Punica/Punica_sp."

status() :查询每个学名在The Plant List 1.1 (本程序包内置数据) 的接受状态

函数参数:

1
status(species =NA, exact =TRUE, spell_error_max =NULL)

status函数可以查询变种var.、亚种 subsp.以及变型f.是否接受等信息

  • species为输入的字符串向量
  • exact表示是否进行精确匹配,如果选择FALSE,则所有能用grep正则表达式匹配的结果都会显示。一般用精确匹配即可
  • spell_error_max 为所允许的最大的错误拼写的字母数量

status函数对输入的物种名大小写不敏感,物种名的前后以及中间允许有多个空格,species可以包括或者不包括命名人(变型f.之前的命名人除外)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
library(plantlist)
#### 查询一个名称
status("Myrica rubra")
## [1] "1 name(s) to process."
## SCIENTIFIC_NAME AUTHOR STATUS FAMILY ACCEPTED_SPECIES
## 1 Myrica rubra (Lour.) Siebold & Zucc. Accepted Myricaceae Myrica rubra
## ACCEPTED_AUTHOR
## 1 (Lour.) Siebold & Zucc.
#### 查询多个名称

status(c("Myrica rubra",
"Adinandra millettii",
"Machilus thunbergii",
"Ranunculus japonicus",
"Cyclobalanopsis neglecta"))
## [1] "5 name(s) to process."
## SCIENTIFIC_NAME AUTHOR STATUS FAMILY
## 1 Myrica rubra (Lour.) Siebold & Zucc. Accepted Myricaceae
## 2 Adinandra millettii <NA> <NA> <NA>
## 3 Machilus thunbergii Siebold & Zucc. Accepted Lauraceae
## 4 Ranunculus japonicus Thunb. Accepted Ranunculaceae
## 5 Cyclobalanopsis neglecta Schottky Synonym Fagaceae
## ACCEPTED_SPECIES ACCEPTED_AUTHOR
## 1 Myrica rubra (Lour.) Siebold & Zucc.
## 2 <NA> <NA>
## 3 Machilus thunbergii Siebold & Zucc.
## 4 Ranunculus japonicus Thunb.
## 5 Quercus myrsinifolia Blume

重要提示: 由于表示变型的 f. 有时也用于命名人中,因此,用status函数在查询变型时, 请勿为种添加命名人,但是变型的命名人可以提供或者不提供,具体为:

1
2
3
"Hypoxis hirsuta (L.)Coville f. vollosissima Fernald"#  (不能处理)
"Hypoxis hirsuta f. vollosissima Fernald"#(能处理)
"Hypoxis hirsuta f. vollosissima"#(能处理)

CTPL() :用中文名查询科、属、分布、海拔、IUCN等级数据

调用方式: CTPL(taxa = NULL, print_as_list = TRUE)

其中,taxa是植物的中文名向量, print_as_list 只是打印方式的选项,如果为TRUE, 则用列表的方式打印。

注意

  • 由于涉及中文输入和输出,需要在Rstudio中操作
  • 本函数返回值为data.frame, print_as_list参数并不改变返回值的数据类型

count_taxa() :统计CTPL结果的科、属、种数量

调用方式: count_taxa(checklist_dat)

checklist_datCTPL()函数返回的结果,CTPL结果中没有信息的行,将会被忽略。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
library(plantlist)
res_CTPL <- CTPL(c("桃儿七",
"连香树",
"水青树",
"绿樟",
"网脉实蕨",
"Magnolia coco",
"Punica"),
print_as_list = FALSE)
count_taxa(res_CTPL)
## Warning in count_taxa(res_CTPL): Taxa '绿樟, Punica' does not have full scientific name, ignored
## $NO_OF_FAMILIES
## [1] 5
##
## $NO_OF_GENERA
## [1] 5
##
## $NO_OF_SPECIES
## [1] 5
##
## $NO_OF_FAMILIES_BY_GROUP
## group no_of_families
## 1 2 Ferns and lycophytes 1
## 2 4 Angiosperms 4
##
## $NO_OF_GENERA_BY_GROUP
## group no_of_genera
## 1 2 Ferns and lycophytes 1
## 2 4 Angiosperms 4
##
## $NO_OF_SPECIES_BY_GROUP
## group no_of_species
## 1 2 Ferns and lycophytes 1
## 2 4 Angiosperms 4
##
## $NO_OF_GENERA_BY_FAMILY
## family no_of_genera
## 1 Berberidaceae 1
## 2 Cercidiphyllaceae 1
## 3 Dryopteridaceae 1
## 4 Magnoliaceae 1
## 5 Trochodendraceae 1
##
## $NO_OF_SPECIES_BY_FAMILY
## family no_of_species
## 1 Berberidaceae 1
## 2 Cercidiphyllaceae 1
## 3 Dryopteridaceae 1
## 4 Magnoliaceae 1
## 5 Trochodendraceae 1
##
## $NO_OF_SPECIES_BY_GENUS
## genus no_of_species
## 1 Bolbitis 1
## 2 Cercidiphyllum 1
## 3 Magnolia 1
## 4 Sinopodophyllum 1
## 5 Tetracentron 1

make_checklist() :制作markdown格式的植物名录 (按照系统发育顺序排列)

调用:

1
2
3
make_checklist(checklist_dat = NULL, 
outfile = "output_make_checklist.md",
theme = c("complex", "simple", "minimal"))

参数:

  • checklist_dat = NULL: 为CTPL函数返回的结果

  • outfile: 为输出的markdown文件的名称

  • theme: 有三种风格可选,其中

    • complex: 输出的资料最详实,包括IUCN等级、海拔、省级分布等
    • simple : 包括物种名和引证的标本
    • minimal: 只显示物种的中文名和完整学名

关于分类单元的排列顺序:在大类群上按照苔藓、蕨类、裸子植物、被子植物的顺序;每个类群下,按照科的顺序号;科以下,属按照字母排列;属下各种按照分类单元的拉丁名排列。如有提供标本引证,则在CTPL返回的数据框上添加名为SPECIMENS的列即可。

1
2
3
4
5
6
7
8
9
10
11
12
library(plantlist)
res_CTPL <- CTPL(c("桃儿七",
"连香树",
"水青树",
"绿樟",
"网脉实蕨",
"Magnolia coco",
"Punica"), print_as_list = FALSE)
make_checklist(res_CTPL)
## Warning in make_checklist(res_CTPL): Taxa 绿樟, Punica does not have full scientific name, ignored
## File output_make_checklist.md has been saved to:
## C:/Users/jlzhang/Desktop

引用

如果您使用了plantlist程序包,请通过以下方式引用(请根据版本和日期做相应修改):

致谢

编写本程序包最早是2014年1月在中国科学院昆明植物研究所的《生态和进化中的现代统计:基于R语言的应用》( http://blog.sciencenet.cn/blog-255662-793234.html )课程时开始的。特别感谢杨雪飞老师的邀请以及多位老师同学共同讨论。

本程序包苔藓植物各科属的中文名由中国科学院植物研究所刘冰博士提供。 Plantlist 1.1 数据库来源于汪远分享的数据。

感谢高芳銮、李嵘、张健、朱慧玲、刘冰、胡晓丽、冯嘉恩、黄世芳、俞筱押、胡海花、李家湘、刘水银、鲍志贵、张美霞、葛斌杰、孔德良、刘振稳、龙文兴、金建军、夏尚文、李霞、陶旺兰、李秋萍、易逸瑜、张璋、骆争荣、彭舜磊、郭文永、贾蕙君等各位老师同学提出宝贵意见和建议。

参考文献

  • 数据来源 https://github.com/helixcn/plantlist_data
  • 多识团队. (2016至今). 多识植物百科. http://duocet.ibiodiversity.net/.
  • 刘冰, 叶建飞, 刘夙, 汪远, 杨永, 赖阳均, 曾刚,林秦文. (2015). 中国被子植物科属概览: 依据 APG III 系统. 生物多样性, 23(2), 225-231.
  • 环境保护部, 中国科学院. (2013) 《中国生物多样性红色名录——高等植物卷 》 电子版来源: www.mep.gov.cn/gkml/hbb/bgg/201309/W020130917614244055331.pdf
  • Christenhusz, M., Zhang, X. C., and Schneider, H. (2011a). A linear sequence of extant families and genera of lycophytes and ferns. Phytotaxa. 19:7-54
  • Christenhusz, M., Reveal, J., Farjon, A., Gardner, M. F., Mill, R. R., and Chase, M. W. (2011b). A new classification and linear sequence of extant gymnosperms. Phytotaxa. 19:55-70