用plantlist程序包查詢和處理植物學名

2021-02-22 慘綠少年和瑛兒肥的日常

1 簡介

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 安裝Rtools

Rtools是編寫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"#(能處理)

3.4 taxa.table() 基於TPL查詢結果製作科屬種列表

查詢結果多用於在Phylomatic軟體中構建進化樹。示例代碼如下:

sp <- c("Ranunculus japonicus",
"Anemone udensis",        
"Ranunculus repens",        
"Ranunculus chinensis",        
"Solanum nigrum",        
"Punica sp." )
res <- TPL(sp)
taxa.table(res)

3.5 TPL()根據拉丁名,查詢目、科、屬、以及科的編號

TPL函數輸入的數據必須是字符串格式的向量。可以查詢科、屬、種的相應信息,但是並不會提示學名是否為接受名。查詢學名是否有效, 請用status函數。

TPL("Carex")
# 查詢薹草屬

TPL("Apple")
# 查詢蘋果的英文名

splist <- c("Ranunculus japonicus",
           "Solanum nigrum",            
           "Punica sp.",
           "Machilus",
           "Today",
           "####" )### 查詢多個種

res <- TPL(splist)


引用plantlist程序包

如果您使用了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更新版)。

相關焦點

  • 植物中文學名的國際意義
    2020年5月,我們完成了全球維管植物470個科,13946個屬和30511個種的植物中文學名初步擬定,並在網站「植物中文學名查詢系統(測試2版)www.plantname.xyz」上進行了數據更新。隨著全球維管植物科和屬的中文學名的初步擬定,植物中文學名系統成為一個可以容納全球植物的國際命名系統,中文學名的國際意義開始凸顯出來。
  • rpm和yum的使用,程序包編譯安裝以及編譯apache過程中出現的問題
    查詢/驗證軟體包選項: -a, --all 查詢/驗證所有軟體包 -f, --file 查詢/驗證文件屬於的軟體包 -g, --group 查詢/驗證組中的軟體包 -p, --package
  • 植物中文學名系統草案
    三、植物拉丁學名存在諸多問題作為國際統一的植物命名法,瑞典植物學家林奈於1753年所倡用的植物雙名法規定,每種植物的學名由兩個拉丁文單詞組成,第一個單詞為某一植物隸屬的屬名,第二個單詞是種加詞。植物拉丁學名的建立在世界範圍內統一了植物的名稱,為科學文化交流和各種貿易往來提供了便利。然而拉丁學名並不完美。
  • 【英語故事】The plant(兇猛的植物)
    The plant兇猛的植物The plant.有一株植物。The plant snaps.這株植物猛咬一口。The plant snaps and traps ants.這株植物猛咬一口,捉住了好多螞蟻。
  • 植物拉丁學名,聽學霸神解讀!
    1753年瑞典植物學家林奈出版《植物種志》,以拉丁文替植物命名分類,1864年世界第一個植物學會開始普遍使用拉丁學名。掌握植物的拉丁學名很重要,因為俗名容易混淆,使用學名才能超越語言的限制,為植物驗明正身,讓我們掌握特定品種與成分差異。
  • 最全查詢植物專業網站丨植物類研究必備,值得收藏!
    這是一個神奇的網站,因為它可以用俗稱、異名等查詢植物,還可以模糊查詢。並且也包括了很多國外的植物,栽培植物、部分品種等。很多國外植物給了中文譯名,圖片資源豐富,準確度很高。該網站由中科院植物研究所上海辰山植物園陳彬管理。
  • 【植物拉丁 之二】學名(拉丁名)是怎樣煉成的
    常常會有人把「學名」掛到嘴邊,但他們所謂的學名其實是指中文名,或者說某個物種比較正式的中文名稱,比如有人說「彼岸花」的學名叫「石蒜」,這是不恰當的說法,應該說彼岸花的學名是Lycoris radiata,中文正式名稱是「石蒜」。
  • 花名冊 | 植物學名及中文正名的書寫規範
    栽培植物的名稱涉及栽培品種(cultivar,cv.)栽培群(group)雜交群(grex)商品名(trade designation)臨時名等。過去亦常用品種群,現已用栽培群代替。學名基本格式:種(species, sp.)
  • 學植物的這你得清楚!植物拉丁學名命名規則
    (一)雙名法雙名法是由瑞典植物學家林奈(Carl Linnaeus)發明的,它用於對種(species)一級的野生植物以及自然起源的栽培植物進行命名,雙名法書寫的植物學名由三部分組成(沒有特別需要時,可省略成兩部分),其完整內容和書寫格式如下:屬名 genus epithet(斜體,首字母大寫)+種加詞species epithet
  • R|數據處理|list的轉化與轉置
    b = list(x = 11:20, y = 12:21))rbindlist(ll0) # 此函數無法處理ll,因為無法循環對應# 再複雜一點# 如果其中有一列是我們不想要的,需要先提取再轉化為data.framell1 <- list(a = list(x = 1:10, y = 2:11, z = 1:3),           b = list(x = 11:20, y = 12:
  • AI識別植物,用英語DIY親子綠色科普
    不要緊,很多中文AI也能給出植物英文學名(拉丁名)。就算只有中文學名,也很容易在詞典app上查出英文學名,多數是在「英語百科參考」(Wiki),或者在「在線詞典參考-必應在線詞典」。但是,英文學名不建議記,因為雙名法的拉丁化詞彙很難記,即使記住了,以後表達出來也沒幾個人懂。應該找植物的common name(普通名、通用名、俗名),有時不止一個,挑一個好記的就行。
  • 植物拉丁學名命名規則 |【水族圈低調分享】
    一.關鍵詞:植物學名根據《國際植物命名法規》,植物的學名(scientific name)即拉丁名,都使用拉丁文的詞或拉丁化的詞來命名。在國際上,任何一個拉丁名,只對應一種植物,任何一種植物,只有一個拉丁名。
  • 這植物「美如玉」,學名很難聽,但遇見別不當回事,全草價值不菲
    各位讀者朋友好,我是家居花草閣,一個專研花草的閒人,寫文章純屬個人愛好,主要希望能和大家一起進步,一同領略大自然的魅力,喜歡植物的朋友可以下評論區互動交流哦。可是大部分人所不知道的是,大自然之中這一些看似平凡的植物大多有著很好的功效和價值,不知道並不代表它們普通,所以請大家以後見到一定要叫它們重視起來,就像今天說的這植物「美如玉」,雖然形態很好,可學名卻很難聽,但遇見了也別不當回事,因為它的全草價值不菲。
  • Plant Cell | 浙江大學植物所揭示植物木質部導管分化新機制
    高等植物進化出能長距離運輸水和礦質營養的導管結構,這為植物向陸地擴張以及繁榮壯大提供了有力保障【1,2】。
  • Plant Cell:郭紅衛植物衰老研究獲重要進展
    五彩繽紛的葉片是秋天裡一道美麗的風景線,這是由於葉片衰老過程中葉綠素降解和其它色素積累引起的。葉片衰老是一個程序化的物質降解,回收利用的過程,即分解後的營養物質和元素從衰老的葉片運輸至生長旺盛的葉子或果實、種子中。
  • 用樹莓派和Python給你的植物澆水
    也就是用Arduino或樹莓派自動給植物澆水。在這篇文章中,我將講述我如何使用樹莓派和Python來自動澆灌我的植物。 「Harware.py」和「TimeKeeper.py」都在「classes」文件夾中。然後我創建了一個名為「water_plant.py」的新文件。我把它放在「classes」文件夾之外。 "water_plant.py"文件看起來是這樣的:
  • 農村俗名鼻涕蟲的植物,直到走出一個大學生才找到它的學名
    在農村的一些老瓦屋的屋頂,特別是那種長點青苔的瓦面,經常可以見到一種葉子棒狀,極像一種學名蛞蝓,又稱水蜒蚰,俗名鼻涕蟲的植物。它們向上一面的葉片呈現溝槽,葉子頂端的鋸齒上有許多可以萌生根須的小植株,花序頂生,紅色。
  • 學會用 Mysql show processlist 排查問題
    mysql show full processlist 查看當前線程處理情況事發現場每次執行看到的結果應該都有變化,因為是實時的,
  • plant怎麼記
    plant怎麼記想必plant作為植物的概念早已深入人心,所以我們不介紹這個含義。來講講栽贓和工廠。栽贓其實和植物、種植的概念有異曲同工之妙。比如說核電站就是nuclear power plant.plant,還是動詞,安插、種植的意思。造句:I plant plants in the plant.
  • 15步,你就能擁有自己的Python程序包
    每個軟體開發員和數據科學家都難免要做程序包。本文推薦一篇Python開源程序包的製作指南,希望這個包含了具體操作步驟的指南能讓你在構建程序包時不用花那麼多耐心和時間。(適用於macOS系統的Python3.7版本)嘗試著自己去構建美麗的東西吧!