来自网络的分类信息。
+ 允许用户在许多网站上搜索物种名称(科学的和常见的),下载上下游的分类等级信息,以及许多其他东西。
+ 包中特定API的函数有一个由下划线分隔的前缀和后缀。它们遵循service_whatitdoes的格式。例如,gnr_resolve使用Global Names Resolver的API来解析物种名称。
+ 包中不涉及特定API的通用函数没有下划线分隔的两个单词,例如classification。
+ 某些数据源需要API密钥。有关更多信息,请参阅taxize -authentication。
| 中译名 | API | 前缀 | SOAP? |
|---|---|---|---|
| 网络生命大百科 | Encyclopedia of Life(EOL) | eol | FALSE |
| 综合分类信息服务 | Integrated Taxonomic Information Service(ITIS) | itis | FALSE |
| 全球名称解析器 | Global Names Resolver(from EOL/GBIF) | gnr | FALSE |
| 全球名称名录 | Global Names Index(from EOL/GBIF) | gni | FALSE |
| 国际自然保护联盟濒危物种红色名录 | IUCN Red List | iucn | FLASE |
| Tropicos数据库 | Tropicos(from Missouri Botanical Garden) | tp | FALSE |
| 植物名录 | Theplantlist.org | tpl | FLASE |
| 国家生物技术信息中心 | National Center for Biotechnology Information | ncbi | FALSE |
| 加拿大维管植物数据库 | CANADENSYS Vascan name search API | vascan | FALSE |
| 国际植物名称名录 | International Plant Names Index(IFNI) | ipni | FALSE |
| 世界海洋物种名录 | World Register of Marine Species(WoRMS) | worms | TRUE |
| 生命条形码数据库 | Barcode of Life Data Systems(BOLD) | bold | FALSE |
| 泛欧物种名录基础 | Pan-European Species directories Infrastructure(PESI) | pesi | TRUE |
| 真菌数据库 | Mycobank | myco | TRUE |
| 生物多样性网络 | National Biodiversity Network(UK) | nbn | FALSE |
| 全球真菌名录 | Index Fungorum | fg | FALSE |
| 欧洲多样性观察网 | EU BON | eubon | FALSE |
| 世界名称名录 | Index of Names(ION) | ion | FALSE |
| 生命之树 | Open Tree of Life(TOL) | tol | FALSE |
| 北美自然保护区 | NatureServe | natserv | FALSE |
如果上面的源在SOAP?列中显示TRUE ,则该资源在此包中不可用。它们可以从另一个名为 taxizesoap 的软件包中获得。请参阅GitHub repo了解如何安装https://github.com/ropensci/taxizesoap
COL最近在2019年引入了速率限制-这使得API基本上无法使用——COL +即将推出,当它稳定时我们将在这里合并它。参见https://github.com/ropensci/colpluz获取CoL+的R实现。
目前尚未找到完备的关于taxize的用户手册,暂且以https://www.rdocumentation.org/packages/taxize/versions/0.9.4中的内容为引,先体验一下taxize。
大部分“taxize”都围绕分类标识符展开。众所周知,分类名称是很混乱的,比如拼写错误,同物异名等等。先获取能让数据源识别的标识符(ID),然后才能继续获取其他分类信息。
网页给出了下面的例子:
uids <- get_uid(c("Chironomus riparius", "Chaetopteryx"))
以及运行后在控制台的输出,可以看到输出结果还是非常详细的,包括请求数量、请求内容、请求结果以及汇总报告。
No ENTREZ API key provided
Get one via taxize::use_entrez()
See https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/
══ 2 queries ═══════════════
Retrieving data for taxon 'Chironomus riparius'
✔ Found: Chironomus+riparius
Retrieving data for taxon 'Chaetopteryx'
✔ Found: Chaetopteryx
══ Results ═════════════════
• Total: 2
• Found: 2
• Not Found: 0
而且,返回的结果也不单单是标识符。尝试输出uids后,可以看到该变量里保存的信息非常有用且简洁。
以下是输入:
uids
以下是输出:
[1] "315576" "492549"
attr(,"class")
[1] "uid"
attr(,"match")
[1] "found" "found"
attr(,"multiple_matches")
[1] FALSE FALSE
attr(,"pattern_match")
[1] FALSE FALSE
attr(,"uri")
[1] "https://www.ncbi.nlm.nih.gov/taxonomy/315576"
[2] "https://www.ncbi.nlm.nih.gov/taxonomy/492549"
通过查看get_uid()的帮助页面,可以了解到其他属性的含义。match表示查找结果如何,mutiple_matches表示是否查找到多项匹配结果,pattern_match表示当存在多项匹配时,是否生成了最佳匹配结果,uri表示在此链接有关于当前类群更多的信息。
什么是分类信息?比如说现在有一个物种,然后分类信息就是从种级向上的所有分类等级,包括属、科、目、纲、界。
通过第一步获得的标识符查看它们的分类信息:
out <- classification(uids)
结果是数据框列表

细心一点可以发现,这两个类群的分类阶元至少有27层,这是因为除了界门纲目科属种外,许多中间阶元,例如亚属、亚科、超科、超目等都会包含在分类信息中。
在分别查看这两个数据框时,注意标识符要用字符。分类阶元从上到下逐级减小,直至我们输入的标识符对应的类群。

这个方法并不需要提前获取类群的标识符,也不需要声明类群的分类阶元。
让我们先尝试一下获取属级类群的直系子类群,也就是属下的所有物种,以Salmo为例。
ic <- children("salmo", db ="ncbi")

注意直系子类群有很强的限制性,一般来说,标准的分类阶元是界门纲目科属种,但是正如前文获取分类信息时一样,实际上还会包含超目、亚科等阶元。所以在使用时要返回的结果可能与期望大相径庭,如果要查看某个科中的属级类群有哪些?
ber <- children("berberidaceae", db="ncbi")
实际上,返回的都是亚科类群。

从字面上看,此方法可以实现多层阶元检索子类群。我们先过一下给出的例子:获得Apis的所有物种。
api <- downstream(as.tsn(154395), db = 'itis', downto = 'species', verbose = FALSE)

再多尝试一次,依旧以berberidaceae为例,查找该科下的所有属。
ber <- downstream("berberidaceae", db="itis", downto="genus", verbose=FALSE)
══ 1 queries ═══════════════
Retrieving data for taxon 'berberidaceae'
✔ Found: berberidaceae
══ Results ═════════════════
• Total: 1
• Found: 1
• Not Found: 0
返回的结果中包含了所有berberidaceae的属,只不过没有中间阶元,比如亚科。

从物种Pinus contorta向上检索至属级阶元,具体效果如何见下:
pi <- upstream("Pinus contorta", db = 'itis', upto = 'Genus', verbose=FALSE)

实际上可以这样理解,该方法从目标物种向上级检索到直接父类群,再找到此父类群的所有姊妹类群(同阶元类群)。
这个就很好理解了,直接看看例子:
ace <- synonyms("Acer drummondii", db="itis")
*在
══ 1 queries ═══════════════
Retrieving data for taxon 'Acer drummondii'
✔ Found: Acer drummondii
══ Results ═════════════════
• Total: 1
• Found: 1
• Not Found: 0
Accepted name(s) is/are 'Acer rubrum var. drummondii'
Using tsn(s) 526853

本例子非常清晰明了,当然我们在这里不会详细介绍使用的方法的参数。
sal <- get_ids(sci_com ="Salvelinus fontinalis", db = c('itis', 'ncbi'), verbose=FALSE)
══ db: itis ═════════════════
══ 1 queries ═══════════════
Retrieving data for taxon 'Salvelinus fontinalis'
✔ Found: Salvelinus fontinalis
══ Results ═════════════════
• Total: 1
• Found: 1
• Not Found: 0
══ db: ncbi ═════════════════
No ENTREZ API key provided
Get one via taxize::use_entrez()
See https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/
══ 1 queries ═══════════════
Retrieving data for taxon 'Salvelinus fontinalis'
✔ Found: Salvelinus+fontinalis
══ Results ═════════════════
• Total: 1
• Found: 1
• Not Found: 0

ha <- sci2comm('Helianthus annuus', db = 'itis')
[1] "common sunflower" "sunflower" "wild sunflower" "annual sunflower"
bb <- comm2sci("black bear", db = "itis")
[1] "Ursus americanus luteolus" "Ursus americanus" "Ursus americanus"
[4] "Ursus americanus americanus" "Chiropotes satanas" "Ursus thibetanus"
[7] "Ursus thibetanus"
lc <- lowest_common(c("Sus scrofa", "Homo sapiens", "Nycticebus coucang"), db = "ncbi")

也许你注意到了行号是21,这可能意味着lowest_common方法是先找到所有类群的所有分类信息,即classification,然后交叉比较后抽取了某行分类信息。
资源https://cran.r-project.org/web/packages/taxize/taxize.pdf
介绍函数方法时,并不严格遵循文档的顺序。
描述:被子植物分类系统,又称APGⅢ,中的类群名称和替代名。
用法:apgOrders(…),apgFamilies(…)
参数:…(传递给crul::verb-GET)
参考:http://www.mobot.org/MOBOT/research/APweb/
示例:结果参考 3.2. apg_families 和 3.3. apg_orders。
描述:APGⅢ中的科名和替代名。
格式:该数据框有1705行,6列。

family:科名。
synonym:如果accepted列为FALSE,此项就是接受名;如果accepted列为TRUE,此项为NA。
order:目名。
accepted:逻辑值,取决于family列的名称是否被接受。
original:APG网站的原始数据。当此项存在时,family列的名称将会映射到此项。
accepted_name:接受名。整合family和synonym列后的结果。
说明:本数据集是在2020-06-03借助 apgFamilies() 生成的。
描述:APGⅢ中的科名和替代名。
格式:该数据框有576行,5列。

order:目名。
synonym:如果accepted列为FALSE,此项就是接受名;如果accepted列为TRUE,此项为NA,那 么order列为接受名。
accepted:逻辑值,取决于order列是否为接受名。
original:APG网站的原始数据。当此项存在时,order列的名称将会映射到此项。
accepted_name:接受名。整合order和synonym列后的结果。
说明:本数据集是在2020-06-03借助 apgOrders() 生成的。
描述:在APGⅢ的类群名称查找并替换名称。
用法:apg_lookup(taxa, rank=“family”)。
参数:
说明:本方法在内部调用的是 apg_families 和 apg_orders 这两个数据集。
返回值:APGⅢ中的科名或目名,如果参数taxa的名称与APG中的相同,返回原始名称,否则返回NA。
示例:
发现新名称
apg_lookup(taxa = "Hyacinthaceae", rank = "family")
new name...
[1] "Asparagaceae"
相同名称
apg_lookup(taxa = "Poaceae", rank = "family")
name is the same...
[1] "Poaceae"
检索失败
apg_lookup(taxa = "Foobar", rank = "family")
no match found...
[1] NA
用法:bold_downstream(id, downto, intermediate = FALSE, …)
参数:
说明:此方法需要爬取BOLD网站,故而不太稳定。
返回值:当intermediate为FALSE时,返回的是储存期望阶元的分类信息的数据框;而当intermediate为TRUE时,则返回一个列表,列表长度为2,包括期望阶元的类群名称和中间阶元的名称。
示例:
intermediate = FALSE,即默认
bold_downstream(id = 3451, downto = "species")
name id rank
1 Gadus chalcogrammus 360473 species
2 Gadus macrocephalus 19837 species
3 Gadus morhua 26136 species
4 Gadus ogac 747382 species
5 Gadus sp. 674263 species
6 Gadus sp. OPC-2017 794750 species
intermediate = TRUE
i <- bold_downstream(id = 443, downto = "genus", intermediate = TRUE)

用法:bold_search(sci = NULL, id =NULL, fuzzy = FALSE, dataTypes = “basic”, includeTree = FALSE, response = FALSE, name = NULL, …)
参数:
说明:必须向此方法传递sci或id参数之一,其余参数都是可选的。dataTypes参数的接受值:
| 接受值 | 返回说明 |
|---|---|
| all | 所有数据 |
| basic | 基本的类群信息 |
| images | 标本图片。包含版权信息,图片链接,图片元数据 |
| stats | 标本和测序统计。包括公开物种数,公开BIN数,公开标记物数,公开记录数,标本数,测序物种数,条形码标本数,物种数,条形码物种数 |
| geo | 采集点信息。包括国家和采集点地图 |
| sequencinglabs | 测序实验室。包括实验室名称和记录数 |
| depository | 标本仓库。包括仓库名和记录数 |
| thirdparty | 第三方信息。包括维基百科总结,维基百科链接和GBIF地图 |
返回值:一个由数据框组成的列表。
参考:http://www.boldsystems.org/index.php/resources/api
示例:
简单的例子
bold_search(sci="Apis")
input taxid taxon tax_rank tax_division parentid parentname taxonrep specimenrecords representitive_image.image representitive_image.apectratio
1 Apis 1937 Apis genus Animalia 878935 Apini Apis 5222 BOFTH/B3260-B09+1247093258.jpg 1.362
模糊查找
a <- bold_search(sci="achl", fuzzy = TRUE)

当使用id,同时可以使用dataTypes和includeTree
bold_search(id=88899, dataTypes = "basic", includeTree = TRUE)
input taxid taxon tax_rank tax_division parentid parentname taxonrep
1 88899 18 Chordata phylum Animalia 1 Chordata
2 88899 51 Aves class Animalia 18 Chordata Aves
3 88899 339 Coraciiformes order Animalia 51 Aves
4 88899 88898 Momotidae family Animalia 339 Coraciiformes
5 88899 88899 Momotus genus Animalia 88898 Momotidae
描述:本方法区别于 downstream() 的点在于,children()只搜集直接子类群,而downstream()是搜集期望子阶元的分类名称。
用法:
## Default S3 method:
children(...)
## S3 method for class 'tsn':
children(sci_id, db=NULL, rows=NA, x=NULL, ...)
## S3 method for class 'wormsid':
children(sci_id, db=NULL, ...)
## S3 method for class 'ids':
children(sci_id, db=NULL, ...)
## S3 method for class 'uid':
children(sci_id, db=NULL, ...)
## S3 method for class 'boldid':
children(sci_id, db=NULL, ...)
参数:
返回值:一个带命名的数据框,储存每个输入类群的所有子类群名称。如果在数据源中没有匹配项,则返回NA。
ncbi:当数据源是 ncbi 时,默认ambigous = TRUE,表示像“unclassified”、“unknown”、“uncultured”和“sp.”的子类群都不会舍弃。
bold:数据源bold存在连接不稳定的情况。
示例:
输入ID
children(161994, db = "itis")

输入名称
children("Salmo", db = 'itis')

使用两个数据源
t <- children(get_ids("Apis", db = c('ncbi','itis')))

描述:本方法使用while循环来获取子类群,直到分类阶元与你通过downto参数指定值相同。本方法使用的数据库有itis、gbif、ncbi、worms和bold。
用法:
downstream(...)
## Default S3 method:
downstream(sci_id, db=NULL, downto=NULL, intermediate=FALSE, rows=NA, x=NULL, ...)
## S3 method for class 'tsn'
downstream(sci_id, db=NULL, downto=NULL, intermediate=FALSE, limit=100, start=NULL, ...)
## S3 method for class 'uid'
downstream(sci_id, db=NULL, downto=NULL, intermediate=FALSE, ...)
## S3 method for class 'wormsid'
downstream(sci_id, db=NULL, downto=NULL, intermediate=FALSE, ...)
## S3 method for class 'boldid'
downstream(sci_id, db=NULL, downto=NULL, intermediate=FALSE, ...)
## S3 method for class 'ids'
downstream(sci_id, db=NULL, downto=NULL, intermediate=FALSE, ...)
参数:
返回值:被命名的数据框的列表。匹配失败时返回NA。
bold:BOLD网站不稳定。
示例:
传入单个类群ID
downstream(125732, db = 'worms', downto = 'species')
$`125732`
id name rank
1 300720 Gadus abyssorum species
2 154763 Gadus aeglefinus species
3 300721 Gadus agilis species
4 300723 Gadus albidus species
5 300722 Gadus albidus species
6 300724 Gadus arenosus species
7 300725 Gadus argenteolus species
8 300726 Gadus auratus species
9 300727 Gadus australis species
10 300728 Gadus barbatus species
11 300729 Gadus bifurcus species
12 300730 Gadus blennoides species
13 400581 Gadus brandti species
14 300731 Gadus brandtii species
15 300732 Gadus brosme species
16 154809 Gadus byrkelange species
17 300733 Gadus californicus species
18 154378 Gadus callarias species
19 163020 Gadus capelanus species
20 300734 Gadus carbonarius species
21 300735 Gadus chalcogrammus species
22 300736 Gadus cimbrius species
23 300737 Gadus colias species
24 300738 Gadus colinus species
25 300739 Gadus compressus species
26 300740 Gadus dypterygius species
27 300741 Gadus elongatus species
28 300742 Gadus esmarkii species
29 154381 Gadus euxinus species
30 300743 Gadus fabricii species
31 300744 Gadus fimbria species
32 990089 Gadus finnmarchicus species
33 300745 Gadus frost species
34 300746 Gadus fuliginosus species
35 300747 Gadus fuscus species
36 300748 Gadus glacialis species
37 300749 Gadus gracilis species
38 300750 Gadus heteroglossus species
39 300751 Gadus jubatus species
40 300752 Gadus lacustris species
41 300753 Gadus lepidion species
42 300754 Gadus longipes species
43 154679 Gadus lota species
44 300755 Gadus lubb species
45 154762 Gadus luscus species
46 300756 Gadus lycostomus species
47 254538 Gadus macrocephalus species
48 405746 Gadus maculosa species
49 300757 Gadus maculosus species
50 300758 Gadus magellanicus species
51 300758 Gadus magellanicus species
52 300759 Gadus maraldi species
53 300760 Gadus mediterraneus species
54 300761 Gadus melanostomus species
55 154818 Gadus merlangus species
56 300762 Gadus merluccius species
57 300763 Gadus minimus species
58 300764 Gadus minor species
59 154819 Gadus minutus species
60 300765 Gadus molva species
61 126436 Gadus morhua species
62 300766 Gadus moro species
63 400582 Gadus morrhua species
64 300767 Gadus mustela species
65 300768 Gadus nanus species
66 400580 Gadus navaga species
67 713129 Gadus nawaga species
68 713130 Gadus nawaga species
69 158926 Gadus ogac species
70 300769 Gadus ogat species
71 300770 Gadus ovak species
72 300771 Gadus periscopus species
73 154154 Gadus pollachius species
74 300772 Gadus polymorphus species
75 400590 Gadus potassoa species
76 300773 Gadus poutassou species
77 300774 Gadus proximus species
78 300775 Gadus pruinosus species
79 300776 Gadus punctatus species
80 300777 Gadus purpureus species
81 300778 Gadus pygmaeus species
82 300779 Gadus raninus species
83 300780 Gadus raptor species
84 300781 Gadus rhacinus species
85 400613 Gadus ruber species
86 300782 Gadus rupestris species
87 154823 Gadus saida species
88 300783 Gadus sey species
89 300784 Gadus tacaud species
90 300785 Gadus tau species
91 300786 Gadus tenuis species
92 300787 Gadus tomcod species
93 300788 Gadus torsk species
94 300789 Gadus tricirratus species
95 300790 Gadus trifurcus species
96 300791 Gadus vertagus species
97 300792 Gadus virens species
98 300793 Gadus viridis species
99 300794 Gadus wachna species
attr(,"class")
[1] "downstream"
attr(,"db")
[1] "worms"
传入单个ID
downstream("Apis", db = 'ncbi', downto = 'species')
$Apis
childtaxa_id childtaxa_name rank
1 183418 Apis laboriosa species
2 96030 Apis nuluensis species
3 83312 Apis nigrocincta species
4 7468 Apis koschevnikovi species
5 7464 Apis andreniformis species
6 7463 Apis florea species
7 7462 Apis dorsata species
8 7461 Apis cerana species
9 7460 Apis mellifera species
attr(,"class")
[1] "downstream"
attr(,"db")
[1] "ncbi"
描述:将多个独立物种的阶元层级列表以分类阶元矩阵的形式塞入一个物种内,然后仅根据分类计算距离矩阵,随后输出phylo或dist对象。
用法:
class2tree(input, varstep=TRUE, check=TRUE, ...)
## S3 method for class 'classtree'
plot(x, ...)
## S3 method for class 'classtree'
print(x, ...)
参数:
说明:详见vegan::taxa2dist()。生成分类树不仅依赖分类阶元的聚类,还会使用实际的类群枝。本方法的流程如下:首先,从输入中搜集每个类群的可用分类阶元和对应的ID;然后整合所有类群的阶元向量,生成一个矩阵,矩阵的列是所有类群的有序分类阶元,行是这些类群的阶元向量;随后这个阶元矩阵转换为分类ID矩阵,缺失的阶元会由原阶元名称生成的伪ID代替;最后,ID矩阵用于将具有相似分类阶元层级的类群聚类。
返回值:一个带槽位的classtree对象。当直接输出返回值时,只会显示phylo部分,其余三部分可以通过output$classification查看。
示例:
spnames <- c('Quercus robur', 'Iris oratoria', 'Arachis paraguariensis',
'Helianthus annuus','Madia elegans','Lupinus albicaulis',
'Pinus lambertiana')
out <- classification(spnames, db='itis')
tr <- class2tree(out)
