plantlist是用來查詢和處理植物學名的R程序包,自2013年以來,受到很多植物學和生態學很多老師和同學的關注。R軟體中,類似的程序包還有 taxize (https://cran.r-project.org/web/packages/taxize/index.html)、Taxonstand(https://cran.r-project.org/web/packages/Taxonstand/index.html)等。
相比之下plantlist的主要特點在於:
使用校對過的內置數據,不需要聯網
優化了查詢單個物種名是否為接受名的算法,速度比taxize更快
查詢結果所顯示的信息更加簡潔清晰
支持用中文名批量查詢學名
1.1 plantlist的主要功能批量查詢植物科屬,內置的數據主要來源於The Plant List網站(www.theplantlist.org/),其中被子植物採用APGIII分類系統,同時提供維管植物每個科的編號,極大方便了植物標本的管理,方便植物名錄處理等。
直接生成科/屬/種的列表, 以便導入Phylomatic等軟體生成進化樹
用中文名批量查詢植物學名以及科屬
查詢學名的接受狀態以及完整學名等
1.2 plantlist包內的函數CTPL() 用中文名查詢每個種的科、屬、分布、海拔、IUCN等級數據
CTPL2() 功能與CTPL類似,但CTPL2()只讀寫Excel文件,而CTPL在查詢時要直接輸入中文字符。
status() 查詢每個學名在The Plant List 1.1資料庫中的接受狀態(該資料庫已經放在程序包中)
taxa.table() 基於TPL查詢結果製作科、屬、種列表, 以便用Phylomatic軟體建立進化樹
TPL() 用學名查詢目、科、屬以及科在分類系統中的編號
1.3 內置數據acc_dat: The Plant List網站上的所有接受名
cnplants_dat: 《中國植物名錄》及每個種的科、屬、分布、海拔、中國IUCN等級以及特有性等數據
genera_dat: The Plantlist網站上的所有屬名列表,因源數據有一些錯誤,絕大部分已經修訂。
orders_dat: Angiosperm Phylogeny Website (www.mobot.org/MOBOT/research/APweb/ ) 提供的各科所屬的目。
syn_dat: The Plant List 1.1 網站的異名資料庫
2 軟體安裝plantlist必須要先安裝R才能使用。由於plantlist內部函數CTPL2函數需要使用openxlsx程序包讀取xlsx文件,所以也要安裝openxlsx所依賴的Rtools以及Rcpp,並配置好啟動路徑才能正常使用。
2.1 安裝R軟體R軟體下載的地址為:(http://cran.r-project.org/bin/windows/base/)。請儘量下載最新版本的R並按照默認路徑安裝。因為程序運行過程中涉及UFT8字符轉換,所以R版本不能低於3.0.3。
圖1. R軟體windows版本下載頁
圖2. R軟體3.3.1的登錄界面
2.2 安裝Rstudio推薦用Rstudio的Console輸入函數查詢,這是因為在部分Windows系統中, R自帶的RGui中無法正常輸入漢字,而Rstudio較好地解決了字符編碼和漢字輸入的問題。
涉及字符編碼時,建議所有文本文件都使用UTF-8,這樣可以降低出現亂碼的可能性。
Rstudio可以在(https://www.rstudio.com/products/rstudio/download/) 下載。
2.3 安裝RtoolsRtools是編寫R程序包的工具軟體,含有讀寫xlsx文件所需的unzip和zip函數,安裝時必須允許Rtools修改啟動路徑。
Rtools的下載地址為(https://cran.r-project.org/bin/windows/Rtools/)。安裝Rtools時須允許其修改系統路徑system PATH。
圖3. Rtools下載頁面,請以列表中第一行未凍結的版本為準
圖4. 安裝Rtools時應該允許其修改system PATH
2.4 檢查Rtools是否已正確配置Rtools安裝完成後可以通過以下方式檢查是否安裝成功:
圖5. 在控制臺中輸入zip, 如圖所示,若未提示錯誤,則Rtools安裝和配置成功
2.5 安裝openxlsx程序包openxlsx程序包用來讀取和保存帶有植物名錄的xlsx模板,在Rconsole中輸入:
install.packages("openxlsx")
然後,在彈出的窗口選擇距離較近的CRAN鏡像,openxlsx程序包會自動下載並安裝好。部分地區由於網絡限制,不一定能打開r-project網站的雲服務,以致報錯。此時可以用以下命令從指定的CRAN鏡像網站安裝:
install.packages("ctv", repos = "http://cran.R-project.org")
其中 http://cran.R-project.org 可以替換為任何CRAN鏡像名。CRAN鏡像列表可在以下網址查看:https://cran.r-project.org/mirrors.html
圖6. 通過install.packages命令安裝openxlsx程序包
2.6 安裝 plantlist程序包由於plantlist程序包中有非ASCII碼,所以一直沒有上傳到CRAN。plantlist包的穩定版本在R-Forge (https://r-forge.r-project.org/R/?group_id=2052), 最新版本的原始碼保存在github。
圖7. Rforge網站上plantlist的頁面
2.6.1 從R-Forge下載安裝命令是:
install.packages("plantlist", repos="http://R-Forge.R-project.org")
2.6.2 從github下載和安裝plantlist的github網址是(https://www.github.com/helixcn/plantlist)。可使用如下命令安裝:
devtools::install_github("helixcn/plantlist")
若尚未安裝devtools, 需要輸入以下命令安裝:
install.packages("devtools")
至此,plantlist及其依賴的程序包都安裝好了。
3 plantlist各函數的使用方法在使用plantlist之前,必須用library(plantlist) 加載plantlist。查詢每個函數的使用方法, 請輸入?函數名,例如: ?TPL即可查看TPL函數的幫助界面。
3.1 CTPL() 用中文名查詢科、屬、分布、海拔、IUCN等級數據示例代碼如下:
library(plantlist)
CTPL(c("楊梅", "多花泡花樹"))
CTPL(c("網脈實蕨", "江南星蕨"))
# 將結果保存到Excel文件中
library(openxlsx)
rrr <- CTPL(c("側金盞花",
"多花泡花樹",
"網脈山龍眼",
"綠樟",
"網脈實蕨"))
write.xlsx(rrr, "results.xlsx")
# 純文本文件的讀寫
# Save to UTF-8writeLines(text = c("桃兒七",
"連香樹",
"水青樹",
"綠樟",
"網脈實蕨"),
con = "test_species.txt",
useBytes = TRUE)
sp <- readLines("test_species.txt", encoding = "UTF-8")
CTPL(sp)
圖 8. CTPL的查詢結果
3.2 CTPL2() 用中文名查詢科、屬、分布、海拔、IUCN等級數據CTPL2可以直接讀取Excel文件第一列的數據,並以此和內置的cnplants_dat數據匹配,結果保存在自動生成的xlsx文件中。示例代碼如下:
# Example of CTPL2
library(plantlist)
library(openxlsx)
species <- data.frame(plants = c("側金盞花", "多花泡花樹",
"網脈山龍眼",
"綠樟",
"網脈實蕨",
"無根藤",
"黃樟",
"香葉樹",
"山雞椒",
"潺槁木姜子",
"豺皮樟",
"浙江潤楠",
"廣東潤楠",
"廣寄生",
"兩廣梭羅",
"假蘋婆",
"地桃花",
"白背黃花稔",
"通泉草",
"野牡丹"))
write.xlsx(species, "species_to_search.xlsx")
CTPL2("species_to_search.xlsx")
圖9. CTPL2的查詢結果。
3.3 status() 查詢每個學名在The Plant List 1.1 的接受狀態函數的參數 status(species =NA, exact =TRUE, spell_error_max =NULL)
species為輸入的字符串向量。
exact表示是否進行精確匹配,如果不是精確匹配,則所有能用grep正則表達式匹配的結果都會顯示。一般建議用精確匹配。
spell_error_max 為所允許的最大的錯誤拼寫的字母數量。
status函數對輸入的species物種名大小寫不敏感,物種名的前後以及中間允許有多個空格,species可以包括或者不包括命名人(變型f.之前的命名人除外)。
status函數可以查詢變種var. 亞種 subsp. 以及變型f. 是否接受等信息.
3.3.1 使用方法:library(plantlist)## 建立物種名單
sp <-c("Elaeocarpus decipiens",
"Syzygium buxifolium",
"Daphniphyllum oldhamii",
"Loropetalum chinense",
"Rhododendron latoucheae",
"Rhododendron ovatum",
"Vaccinium carlesii",
"Schima superba")### 檢查名單內每個種的接受情況以及接受名
status(sp)###
檢查一個種的接受情況
status("Myrica rubra") ## 楊梅
status("Adinandra millettii") ## 楊桐
status("cyclobalanopsis neglecta ") ## 竹葉青岡
status("Lirianthe henryi") ## 大葉木蘭
#### 同時檢查幾個學名的狀態
status(c("Myrica rubra",
"Adinandra millettii",
"Machilus thunbergii",
"Ranunculus japonicus",
"Cyclobalanopsis neglecta"))
### Check the statusof a scientific name (with or without authorship)
### 查詢學名是否接受
status("Hypoxis filifolia")
### Subspecies (withor without authorship)
### 查詢亞種是否接受
status("Hypoxis kilimanjarica subsp. kilimanjarica")
### Variaty (with orwithout authorship)
### 查詢變種是否接受
status("Hypoxis erecta var. aestivalis")
### Form (with orwithout authorship)###
查詢變型是否接受
status("Hypoxis hirsuta f. villosissima")
### 重要提示:由於表示變型的 f. 有時也用於命名人中,
### 因此,用status函數在查詢變型時, 請勿為種添加命名人,
### 但是變型的命名人可以提供或者不提供,具體為:
"Hypoxis hirsuta (L.)Coville f. vollosissima Fernald"# (不能處理)
"Hypoxis hirsuta f. vollosissima Fernald"#(能處理)
"Hypoxis hirsuta f. vollosissima"#(能處理)
查詢結果多用於在Phylomatic軟體中構建進化樹。示例代碼如下:
sp <- c("Ranunculus japonicus",
"Anemone udensis",
"Ranunculus repens",
"Ranunculus chinensis",
"Solanum nigrum",
"Punica sp." )
res <- TPL(sp)
taxa.table(res)
TPL函數輸入的數據必須是字符串格式的向量。可以查詢科、屬、種的相應信息,但是並不會提示學名是否為接受名。查詢學名是否有效, 請用status函數。
TPL("Carex")
# 查詢薹草屬
TPL("Apple")
# 查詢蘋果的英文名
splist <- c("Ranunculus japonicus",
"Solanum nigrum",
"Punica sp.",
"Machilus",
"Today",
"####" )### 查詢多個種
res <- TPL(splist)
如果您使用了plantlist程序包,請通過以下方式引用:
Jinlong Zhang (2018). plantlist: Looking Up the Status of Plant Scientific Names based on The Plant List Database. R package version 0.5.0. https://github.com/helixcn/plantlist/
致謝感謝高芳鑾、李嶸、胡曉麗、馮嘉恩、黃世芳、俞筱押、胡海花、李家湘、劉水銀、鮑志貴、張美霞、葛斌傑、孔德良、劉振穩、龍文興、金建軍、夏尚文、李霞、陶旺蘭、李秋萍、易逸瑜、張璋、駱爭榮、彭舜磊、郭文永、賈蕙君等各位老師同學試用本軟體並提出寶貴意見。
參考文獻多識團隊. (2016至今). 多識植物百科. http://doucet.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
點擊 「閱讀原文」 跳轉至張老師科學網文章(2020-5-11更新版)。