GraPhlAn繪製的超高顏值物種樹Cladogram

2021-02-19 宏基因組
GraphLan繪製教程

我們經常在文章中看到這樣的圖

Yang Bai, Daniel B. Müller, Girish Srinivas, Ruben Garrido-Oter, Eva Potthoff, Matthias Rott, Nina Dombrowski, Philipp C. Münch, Stijn Spaepen, Mitja Remus-Emsermann, Bruno Hüttel, Alice C. McHardy, Julia A. Vorholt & Paul Schulze-Lefert. Functional overlap of the Arabidopsis leaf and root microbiota. Nature. 2015, 528: 364-369. doi:10.1038/nature16192

還有這樣的圖

Jingying Zhang, Yong-Xin Liu, Na Zhang, Bin Hu, Tao Jin, Haoran Xu, Yuan Qin, Pengxu Yan, Xiaoning Zhang, Xiaoxuan Guo, Jing Hui, Shouyun Cao, Xin Wang, Chao Wang, Hui Wang, Baoyuan Qu, Guangyi Fan, Lixing Yuan, Ruben Garrido-Oter, Chengcai Chu & Yang Bai. NRT1.1B is associated with root microbiota composition and nitrogen use in field-grown rice. Nature Biotechnology. 2019, 37: 676-684. doi:10.1038/s41587-019-0104-4

是不是很漂亮

之前公眾號已經為大家介紹了GraPhlAn進化樹的繪製方法,如下文:

今天就帶大家根據特徵表(OTU table)、和物種注釋(Taxonomy),繪製另一類高顏值的物種樹(Cladogram,也稱進化分支圖)。並提供相關測試數據、代碼,讓你準備好輸入文件,方便一步步生成繪圖所需文件。並可按需求組合數據和樣式,達到出版要求的圖片。

代碼和數據下載連結

https://github.com/YongxinLiu/Note/tree/master/R/format2graphlan

format2graphlan.Rmd # 完整代碼文件,包括R和Bash兩種語言,需要在Linux中運行

format2graphlan.html # 代碼完整運行的報告,方便閱讀,也確保代碼有效和可重複

如果連結失效,「宏基因組」公眾號後臺回復「graphlan」關鍵字獲取最新數據和代碼下載連結。

輸入文件

文件夾內要準備至少兩個文件:OTU表和物種注釋

# 從現在項目中複製文件,準備起始數據
cd ~/github/Note/R/format2graphlan
cp ~/ehbio/amplicon/22Pipeline/result/otutab.txt ./
cp ~/ehbio/amplicon/22Pipeline/result/taxonomy.txt ./

OTU表otutab.txt格式如下:行名為特徵OTU/ASV,列名為樣本名,可以為原始值或標準化的小數均可。

#OTUID KO1 KO2 KO3
ASV_1 1113 1968 816
ASV_2 1922 1227 2355
ASV_3 568 460 899

物種注釋taxonomy.txt:包括OTUID和7級注釋,末知的補Unassigned

OTUID Kingdom Phylum Class Order Family Genus Species
ASV_1 Bacteria Actinobacteria Actinobacteria Actinomycetales Thermomonosporaceae Unassigned Unassigned
ASV_2 Bacteria Proteobacteria Betaproteobacteria Burkholderiales Comamonadaceae Pelomonas Pelomonas_puraquae
ASV_3 Bacteria Proteobacteria Gammaproteobacteria Pseudomonadales Pseudomonadaceae Rhizobacter Rhizobacter_bergeniae

首選我們要對原始數據進行篩選,因為結果過少或過多都不美觀。如根據豐度進行篩選Top 150的特徵進行展示。

1. 特徵表求均值並按豐度篩選

輸入文件:OTU表+物種注釋

可以指定豐度或數量篩選,兩個條件選擇共有部分

輸出文件:OTU對應均值,篩選後的OTU表+物種注釋

# 參數設置
# 按豐度篩選,如0.01即代表0.01%,即萬分之一
abundance = 0.01
# 按數量篩選,如150即代表最高豐度的150個特徵
number = 150

# 讀取輸入文件
otutab = read.table("otutab.txt", sep="\t", header = TRUE, row.names = 1, stringsAsFactors = F, comment.char = "")
taxonomy = read.table("taxonomy.txt", sep="\t", header = TRUE, row.names = 1, stringsAsFactors = F, comment.char = "")

# 數據篩選
# 標準化並求均值
norm = as.data.frame(t(t(otutab)/colSums(otutab,na=T)*100))
# 豐度由大到小排序
idx = order(rowMeans(norm), decreasing = T)
norm = norm[idx,]
# 按豐度篩選
idx = rowMeans(norm) > abundance
filtered_otutab = norm[idx,]
# 按數量篩選
filtered_otutab = head(norm, number)
# 添加均值並保留4位小數
filtered_otutab = round(cbind(rowMeans(filtered_otutab), filtered_otutab), digits = 4)
colnames(filtered_otutab)[1] = "Mean"
# 對應過濾物種注釋
idx = rownames(filtered_otutab) %in% rownames(taxonomy)
filtered_otutab = filtered_otutab[idx,]
filtered_taxonomy = taxonomy[rownames(filtered_otutab),]

# 保存輸出文件
# 過濾的OTU表
write.table("OTUID\t", file="filtered_otutab.txt", append = F, sep="\t", quote=F, eol = "", row.names=F, col.names=F)
suppressWarnings(write.table(filtered_otutab, file="filtered_otutab.txt", append = T, sep="\t", quote=F, row.names=T, col.names=T))
# 過濾的物種注釋
write.table("OTUID\t", file="filtered_taxonomy.txt", append = F, sep="\t", quote=F, eol = "", row.names=F, col.names=F)
suppressWarnings(write.table(filtered_taxonomy, file="filtered_taxonomy.txt", append = T, sep="\t", quote=F, row.names=T, col.names=T))

2. 繪製樹骨架文件

輸入文件為篩選後的taxonomy文件:filtered_taxonomy.txt

本處主要篩選了門、綱、目、科、屬和OTU作為樹枝,按科添加標籤,並對應門著色。由於Unassigned末分類的較多,重名會引著色混亂(每個標籤是獨立著色的,名稱必須唯一,不唯一時後出現的名稱會覆蓋之前的顏色值。),本文去除了在科水平無注釋的分類單元。

# 讀取篩選後的文件,不設置行名
tax = read.table("filtered_taxonomy.txt", sep="\t", header = TRUE, stringsAsFactors = F)
# 篩選門-屬5級+OTUID
tree = data.frame(tax[,c(3:7,1)], stringsAsFactors = F)
# head(tree)
## clarify taxonomy,解決不同級別重名問題,為可識別級別,且與Greengene格式保持一致
tree[,1] = paste("p__",tree[,1],sep = "")
tree[,2] = paste("c__",tree[,2],sep = "")
tree[,3] = paste("o__",tree[,3],sep = "")
# tree[,4] = paste("f__",tree[,4],sep = "")
tree[,5] = paste("g__",tree[,5],sep = "")
# save tree backbone, 按點分隔格式

# 解決科標籤重名問題
idx = tree[,4] %in% "Unassigned"
# 方法1. 重名標籤添加數字編號,但結果有太多Unassigned
# tree[idx,4] = paste0(tree[idx,4], 1:length(tree[idx,4]))
# 方法2. 過濾掉科末注釋的條目,數量會減少,但圖片更美觀
tree = tree[!idx,]
# 簡化一些代_的不規則科名
tree[,4] = gsub('_\\w*',"",tree[,4])
write.table (tree, file="tree1_backbone.txt", sep=".", col.names=F, row.names=F, quote=F)

# 列出現在有門、綱、目、科、屬,用於設置與門對應的背景色
Phylum = unique(tree[,1])
Class = unique(tree[,2])
Order = unique(tree[,3])
Family = unique(tree[,4])
Genus = unique(tree[,5])

# 篩選四大菌門中的科並按門著色
# 修改為目,則將tree的4列改為3列,Family改為Order
pro = tree[tree[,1]=="p__Proteobacteria",4]
act = tree[tree[,1]=="p__Actinobacteria",4]
bac = tree[tree[,1]=="p__Bacteroidetes",4]
fir = tree[tree[,1]=="p__Firmicutes",4]

# 對每個科進行標籤、文字旋轉、按門注釋背景色
# 也可調整為其它級別,如Order, Class或Genus
label_color = data.frame(stringsAsFactors = F)
for (element in Family)
{
# element
anno = data.frame(stringsAsFactors = F)
anno[1,1] = element
anno[1,2] = "annotation"
anno[1,3] = "*"
# 設置文字旋轉90度
anno[2,1] = element
anno[2,2] = "annotation_rotation"
anno[2,3] = "90"
# 設置背景色,四大門各指定一種色,其它為灰色
anno[3,1] = element
anno[3,2] = "annotation_background_color"

if (element %in% pro)
{
anno[3,3] = "#85F29B"
} else if (element %in% act)
{
anno[3,3] = "#F58D8D"
} else if (element %in% fir)
{
anno[3,3] = "#F7C875"
} else if (element %in% bac)
{
anno[3,3] = "#91DBF6"
} else {
anno[3,3] = "grey"
}
label_color = rbind(label_color,anno)
}
write.table(label_color, "tree2_label_color.txt", sep = "\t", quote = F,col.names = F,row.names = F, na="")

此時生成了兩個文件

樹骨架

tree1_backbone.txt

是一點相連的各級物種分類名稱,添加p, c等為減少不同級別的不規範重名引起顏色混亂

p__Actinobacteria.c__Actinobacteria.o__Actinomycetales.Thermomonosporaceae.g__Unassigned.ASV_1
p__Proteobacteria.c__Betaproteobacteria.o__Burkholderiales.Comamonadaceae.g__Pelomonas.ASV_2
p__Proteobacteria.c__Gammaproteobacteria.o__Pseudomonadales.Pseudomonadaceae.g__Rhizobacter.ASV_3

樹顏色和標籤

tree2_label_color.txt

科水平的標籤、標籤旋轉角度和與門對應的顏色。

Thermomonosporaceae annotation *
Thermomonosporaceae annotation_rotation 90
Thermomonosporaceae annotation_background_color #F58D8D
Comamonadaceae annotation *
Comamonadaceae annotation_rotation 90
Comamonadaceae annotation_background_color #85F29B

基本樹繪圖

繪製樹,還需要一些參數文件,見cfg目錄,是我提前編寫好的樣本,可以調整更多樣式。

cfg/global.cfg設置了圖型的基本樣式,配色等,

以下部分以bash中操作,需要在Linux上的Rstudio或Rstudio server中操作。或自己使用終端連接伺服器執行。

一定要提前安裝過graphlan這個軟體,安裝方法conda install graphlan

rm -rf track*
# 生成樹的默認參數,可手動調整更多樣式
cat cfg/global.cfg tree2_label_color.txt > track0
# 合併所有的注釋,接下來會生成更多track,使樹更複雜
cat track* > graphlan_annotate.txt
# 注釋樹
graphlan_annotate.py --annot graphlan_annotate.txt tree1_backbone.txt graphlan.xml
# 繪圖,size決定圖片大小,越大字越小
graphlan.py graphlan.xml graphlan0_tree.pdf --size 5

現在用以上代碼為大家寫出了一套注釋方案,這要是手動編寫和優化出這方案,也可能要花上幾天至幾周。

我們需要從樹文件中獲得節點名稱,並添加注釋數據。

如獲得結點的豐度,在下面很多注釋都會基於豐度信息

# 獲得最終出圖的結點ID
cut -f 6 -d '.' tree1_backbone.txt > tree1_backbone.id
# 注釋結果豐度均值
awk 'BEGIN{OFS=FS="\t"} NR==FNR{a[$1]=$2} NR>FNR {print $1,a[$1]}' filtered_otutab.txt tree1_backbone.id > tree1_backbone.mean

形狀標籤有無

樣式1. 如篩選豐度,用紫色方塊標出大於千分之5的結點

# 環1,篩選千分之五的結果注釋為方塊,cfg/ring1.cfg中的m代表紫色,R代表方塊
cat cfg/ring1.cfg <(awk '$2>0.5' tree1_backbone.mean | cut -f 1 | sed 's/$/\tring_shape\t1\tR/') > track1

# 繪圖,加第一環矩形,展示豐度大於千萬的特徵
cat track* > graphlan_annotate.txt
graphlan_annotate.py --annot graphlan_annotate.txt tree1_backbone.txt graphlan.xml
graphlan.py graphlan.xml graphlan1_rectangle.pdf --size 5

樣式2. 如篩選豐度,用第二環位置橙色倒三角標出小於千分之5的結點

注釋:ring2.cfg為第二環,顏色y為yellow橙色,注釋track中也為2

# 環1篩選千分之五的結果注釋為方塊,cfg/ring1.cfg中的m代表紫色,R代表方塊
cat cfg/ring2.cfg <(awk '$2<=0.5' tree1_backbone.mean | cut -f 1 | sed 's/$/\tring_shape\t2\tv/') > track2

# 繪圖,加第一環矩形,展示豐度大於千萬的特徵
cat track* > graphlan_annotate.txt
graphlan_annotate.py --annot graphlan_annotate.txt tree1_backbone.txt graphlan.xml
graphlan.py graphlan.xml graphlan2_triangle.pdf --size 5

熱圖展示豐度

添加所有樣品均值作為熱圖,作為第3環。

本質上熱圖即環形條帶的透明度

# 環3用綠色不同的透明度展示豐度
cat cfg/heat3.cfg <(sed 's/\t/\tring_alpha\t3\t/g' tree1_backbone.mean) > track3

# 繪圖綠色不同的透明度的3號環
cat track* > graphlan_annotate.txt
graphlan_annotate.py --annot graphlan_annotate.txt tree1_backbone.txt graphlan.xml
graphlan.py graphlan.xml graphlan3_heatmap.pdf --size 5

我們可以用同樣原理,添加每個組,或每個樣品的豐度熱圖。

柱狀圖顯示豐度

# 環4用藍色柱狀圖展示豐度
cat cfg/bar4.cfg <(sed 's/\t/\tring_height\t4\t/g' tree1_backbone.mean) > track4

# 繪圖,環4用藍色柱狀圖展示豐度
cat track* > graphlan_annotate.txt
graphlan_annotate.py --annot graphlan_annotate.txt tree1_backbone.txt graphlan.xml
graphlan.py graphlan.xml graphlan4_bar.pdf --size 5

附錄1. 顏色

顏色有三種設置方法

1. 顏色英文名稱

blue, green, red, cyan, magenta, yellow, black, white

2. 單個字母的縮寫

『b』 (blue), 『g』 (green), 『r』 (red), 『c』 (cyan), 『m』 (magenta), 『y』 (yellow), 『k』 (black), 『w』 (white)

3. RGB模式顏色

rrggbb, for example #FF0000 corresponds to (full) red附錄2. 形狀選擇

『.』 : 點 point marker

『,』 : pixel marker

『o』 : 圈 circle marker

『v』 : 下三角 triangle_down marker

『^』 : triangle_up marker

『<』 : triangle_left marker

『>』 : triangle_right marker

『1』 : tri_down marker

『2』 : tri_up marker

『3』 : tri_left marker

『4』 : tri_right marker

『s』 : square marker

『R』 : 矩陣 rectangle marker

『p』 : pentagon marker

『*』 : star marker

『h』 : hexagon1 marker

『H』 : hexagon2 marker

『+』 : plus marker

『x』 : x marker

『D』 : diamond marker

『d』 : thin_diamond marker

『|』 : vline marker

『_』 : hline marker

Reference

http://huttenhower.sph.harvard.edu/graphlan

Asnicar, Francesco, George Weingart, Timothy L. Tickle, Curtis Huttenhower, and Nicola Segata. 2015. 『Compact graphical representation of phylogenetic data and metadata with GraPhlAn』, PeerJ, 3: e1029.

Jingying Zhang, Yong-Xin Liu, Na Zhang, Bin Hu, Tao Jin, Haoran Xu, Yuan Qin, Pengxu Yan, Xiaoning Zhang, Xiaoxuan Guo, Jing Hui, Shouyun Cao, Xin Wang, Chao Wang, Hui Wang, Baoyuan Qu, Guangyi Fan, Lixing Yuan, Ruben Garrido-Oter, Chengcai Chu & Yang Bai. NRT1.1B is associated with root microbiota composition and nitrogen use in field-grown rice. Nature Biotechnology. 2019, 37: 676-684. doi:10.1038/s41587-019-0104-4

註:本文的代碼來自我之前發表的Nature Biotechnology中的圖5,如果參考本文代碼繪製類似圖,請引用以上兩篇文章,謝謝!

猜你喜歡

10000+:菌群分析 寶寶與貓狗 梅毒狂想曲 提DNA發Nature Cell專刊 腸道指揮大腦

系列教程:微生物組入門 Biostar 微生物組  宏基因組

專業技能:學術圖表 高分文章 生信寶典 不可或缺的人

一文讀懂:宏基因組 寄生蟲益處 進化樹

必備技能:提問 搜索  Endnote

文獻閱讀 熱心腸 SemanticScholar Geenmedical

擴增子分析:圖表解讀 分析流程 統計繪圖

16S功能預測   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在線工具:16S預測培養基 生信繪圖

科研經驗:雲筆記  雲協作 公眾號

編程模板: Shell  R Perl

生物科普:  腸道細菌 人體上的生命 生命大躍進  細胞暗戰 人體奧秘  

寫在後面

為鼓勵讀者交流、快速解決科研困難,我們建立了「宏基因組」專業討論群,目前己有國內外5000+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入群,務必備註「姓名-單位-研究方向-職稱/年級」。PI請明示身份,另有海內外微生物相關PI群供大佬合作交流。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍未解決群內討論,問題不私聊,幫助同行。

學習16S擴增子、宏基因組科研思路和分析實戰,關注「宏基因組」

點擊閱讀原文,跳轉最新文章目錄閱讀

相關焦點

  • 進化樹作圖專題:進化樹的幾種分類
    本期承接上期進化樹作圖專題1的內容,和大家分享一下關於進化樹圖的幾種分類。 依據不同規則,樹的分類可以有很多種。由於本專題主要針對於作圖,所以這裡主要的原則就是——樹的外形。所謂「根」,就是一棵樹上的所有基因或物種的最近共同祖先(most recent common ancestor,MRCA)。
  • 17種超高顏值動物,也有令人痴迷的美!
    17種超高顏值動物,也有令人痴迷的美! 07、火蠑螈 歐洲最著名的蠑螈物種之一, 其特點是不尋常和明亮的顏色
  • 喬木界的「七仙女」,顏值超高,至少2位你沒見過(中篇)
    上一篇文章主要介紹了喬木界7個顏值極高、觀花觀果的品種,這七位仙女分別是,欒樹、北美海棠、四照花、山茱萸、水榆花楸、英格蘭山楂、赬珠木,前文已經介紹了大姐欒樹,二姐北美海棠,接下來介紹三姐四照花和四妹山茱萸。
  • 【海洋科普】顏值超高的海底殺手——獅鬃水母
    【海洋科普】顏值超高的海底殺手——獅鬃水母 2020-07-10 17:48 來源:澎湃新聞·澎湃號·政務
  • 如何比對不同序列同源性,畫出高顏值的進化樹?
    中糧肉食中心實驗室團隊   編輯:劉建城    審核:龍進學博士                                                  如何畫出高顏值的進化樹                   比如↓↓↓如果我們也能畫出這麼漂亮的進化樹,那麼升職加薪,迎娶白富美,當上CEO,走上人生巔峰,都不是事兒啊。(扯的有點遠,不過加油吧!!!
  • 超高顏值冷門boost鞋款推薦!
    01EQT Support 91/18 「黑白」作為三葉草品牌的當家大哥,EQT的人氣最近不斷飆升,超高的性價比,不錯的顏值讓它一直高居學生黨神鞋的行列網面、皮質的搭配使得鞋子的質感超高,鞋帶處的綁帶也為鞋子的支撐性和防側翻性提供了不錯的提升。目前這雙鞋子的市場價在¥450元左右,性價比還是很高的。
  • 「最醜」國內超模呂燕,混血兒子顏值超高,混血兒為何顏值都高?
    現實生活中,沒有一個人不想擁有一個天生就超高的顏值,可是顏值的高低是天生的,儘管有很多的醫學技術可以去對其進行後天的更改,但是總歸缺少了一種自然美。通常來說,混血兒的顏值普遍偏高,這是一個幾乎無可撼動的事實,而且一般來說,即使爸爸或媽媽長相平庸,但是只要跟另一半的種群不同,生出的混血孩子顏值也會不凡。
  • 物種進化「生命樹」圖繪成
    原標題:物種進化「生命樹」圖繪成   科技日報北京9月23日電 (記者常麗君)美國杜克大學、密西根大學等11家單位的研究人員,日前聯合發布第一個涵蓋動物、植物、真菌、微生物約230萬個已命名物種的「生命樹」草圖。
  • 超高顏值角色美哭玩家《天涯明月刀》手遊驚現國風美人!
    首先是玩家選定自己喜歡的門派後,在捏臉系統中精細的打造出屬於自己獨一無二的臉,同時也可以通過手遊中特別的拍照捏臉功能,上傳相片捏出自己最喜歡的一張明星臉,打造屬於自己的超高顏值人物角色。其次在遊戲人物服飾上邀請古風設計大師,不僅有採用蜻蜓式繡上圖案的雍容華貴服裝,還有上等藍色絲綢加工、全新花紋設計精確到每一個細節的藍天碧水國風服。
  • 辰山植物園熱帶花果館全新升級,顏值超高!
    辰山植物園熱帶花果館全新升級,顏值超高!辰山植物園熱帶花果館全新升級,顏值超高!》
  • 三種超高顏值的蜥蜴,第二種售價不高酷似蜘蛛俠,讓人眼前一亮
    蜥蜴的種類有很多,並且不是所有的蜥蜴都長得非常可怕的,還有一些有著超高顏值的蜥蜴,它們是真的長得非常漂亮的類型了。1、安樂蜥綠色的安樂蜥相比其它的蜥蜴來說是真的擁有著超高顏值的,是不是覺得這種蜥蜴聽起來就是非常溫和的類型?其實吧,這種蜥蜴的長相看起來很日常,這樣說的話,你是不是會對這種蜥蜴的好感加深一點?
  • 人工智慧繪製地球上的每一棵樹,帶你了解撒哈拉沙漠
    在西非薩赫勒地區與撒哈拉地區,數百萬公裡範圍內繪製了18億個單獨的樹的信息,這是有史以來人類對樹木進行如此大規模的繪製科學家們通過人工智慧分析巨大的衛星圖像資料庫,他們採用巨大的神經網絡,這種神經網絡能夠根據物體的形狀和顏色對他們進行識別,比如樹木
  • 異性緣最旺,暗戀者都排長隊的三大星座,尤其水瓶座,顏值超高
    異性緣最旺,暗戀者都排長隊的三大星座,尤其水瓶座,顏值超高水瓶女水瓶座女生腦海中有很多新奇的想法,會給人一種古靈精怪的感覺,和她們在一起生活裡總是充滿了歡樂。水瓶座是非常善良體貼的,能夠在和自己另一半相處的時候非常的柔弱,從而就是會讓自己的另一半表現出自己的氣概來,所以他們身邊的暗戀者也都是非常多的,是能夠展現出屬於自己的特徵,而且水瓶座他們的顏值和外表都是擁有者超高的顏值的。
  • 小牛電動車U1,顏值超高的智能電動車
    小牛電動車U1,顏值超高的智能電動車 2020年09月16日 10:55作者:黃頁編輯:黃頁 今年,電動車市場可謂是最值得關注的,因為新國標在各地陸續實行
  • 《我有特殊溝通技巧》剛播,範世錡又一愛情劇來襲,女主顏值超高
    劇中範世錡飾演的男主角荊楚,也是憑藉著帥氣的顏值和出色的演技,獲得不少觀眾的喜愛。然而《我有特殊溝通技巧》這部劇才剛播不久,範世錡又有一部愛情劇來襲,那就是《不可思議的愛情》。《不可思議的愛情》這部劇是由胡涵清執導,秦琴編劇,範世錡和戚硯笛等明星領銜主演的愛情劇。該劇主要講述了霸道總裁與格鬥保鏢少女之間不可思議的愛情故事。
  • 國際資訊|利用遙感技術繪製入侵物種分布圖
    這可能會產生長期的負面影響,威脅到瀕危物種,並可能通過改變景觀而使納稅人損失大量資金。科學家和研究人員越來越多地使用遙感方法來跟蹤和估計入侵物種的下一步去向,以此來限制它們的影響。 利用NDVI繪製入侵物種分布圖 目前,研究人員發現了許多適合追蹤入侵物種的平臺。