GraPhlAn教程中文版——超炫物種樹進化樹繪製

GraPhlAn教程中文版

GraPhlAn tutorial原文鏈接:https://bitbucket.org/nsegata/graphlan

GraPhlAn是一個軟件工具,可用於生成分類樹和系統發育樹的高質量圓形表示形式。 它着重於系統發育和分類學驅動的研究的簡潔、整合、信息丰度信,輸出結果圖片可直接用於高水平文章發表使用。

概述Overview

下圖報告了GraPhlAn結構的簡要概述:

image

介紹Introduction

請按照本教程學習如何使用GraPhlAn。

image

安裝Installation

GraPhlAn保存於bitbucket網站,可以通過以下兩種方法獲取:

方法1. Bioconda快速安裝

conda install graphlan

方法2. Mercurial下載

在Linux系統中需要安裝mercurial,如Ubuntu中sudo apt install mercurial,纔可以使用hg命令

hg clone ssh://[email protected]/nsegata/graphlan

或者

hg clone https://[email protected]/nsegata/graphlan

方法3. 直接下載壓縮包

詳者注:其也可以不安裝Mercurial直接下載。在 https://bitbucket.org/nsegata/graphlan/downloads/ 頁面有軟件打包的下載鏈接:

wget -c https://bitbucket.org/nsegata/graphlan/downloads/graphlan_commit_6ca8735.zip
# 下載失敗請在windows上訪問此鏈接下載
unzip graphlan_commit_6ca8735.zip
mv graphlan_commit_6ca8735 graphlan

這將在graphlan子文件夾中本地下載GraPhlAn相關數據。 然後,您必須將此子文件夾放入系統路徑,以便可以從系統中的任何位置使用GraPhlAn:

export PATH=`pwd`/graphlan/:$PATH

將以上行添加到bash配置文件中將使添加路徑永久生效。 對於Windows或MacOS系統,應遵循類似的步驟。

腳本Scripts

GraPhlAn主要包括兩個腳本:

  • graphlan_annotate.py
  • graphlan.py

第一個腳本 (graphlan_annotate.py) 用於在輸入樹文件中添加註釋信息。

graphlan_annotate.py --annot annotation_file.txt input_file.txt new_input_file_name.xml

註釋文件可以多次添加至輸入樹文件。

第二個腳本(graphlan.py)用於繪圖,支持 png, pdf, ps, eps, svg 等格式。可使用–dpi設置分辨率 (默認值爲 72),使用–size調節圖片尺寸 (默認爲7.0英寸)。

graphlan.py new_input_file_name.xml image_name.png --dpi 150 --size 7
graphlan.py new_input_file_name.xml image_name.svg --dpi 150 --size 7

分步示例Step-by-step example

本分步教程基於您可以在examples文件夾(快速鏈接)內找到的guide示例。

指南文件夾包含以下文件:

  • guide.txt
  • step0.sh
  • annot_0.txt
  • step1.sh
  • annot_1.txt
  • step2.sh
  • annot_2.txt
  • step3.sh
  • annot_3.txt
  • step4.sh

如果需要更多幫助,可以查看每個文件.txt或.sh。 我們決定爲每個步驟行添加一個註釋(#comment),以指定您將要使用以下編寫的自定義內容。

我們下面進入示例目錄

cd graphlan/examples/guide

0繪圖 Default plot (step 0)

當你執行如下命令

./step0.sh

你可以看到下圖:

image

step0.sh執行了如下兩個繪圖命令:

# 以guide.txt爲輸入文件,輸出位圖step_0.png,指定分辨率300和大小寬3.5英寸
graphlan.py guide.txt step_0.png --dpi 300 --size 3.5
# 繪製svg矢量,方便AI編輯
graphlan.py guide.txt step_0.svg --dpi 300 --size 3.5

這是GraPhlAn的最基本輸出(樹骨架),可以採用註釋進一步美化。

我們看到這是一個三層的物種分類樹,輸入文件是什麼格式呢?

head guide.txt

是以點(.)爲分隔的物種層級註釋文件,我們常用的是7級註釋。本文的示例是採用了科、屬、種三級註釋。

Bacillaceae.Anoxybacillus.Aflavithermus
Bacillaceae.Bacillus.Bamyloliquefaciens
Bacillaceae.Bacillus.Banthracis
Bacillaceae.Bacillus.Batrophaeus
Bacillaceae.Bacillus.Bcellulosilyticus
Bacillaceae.Bacillus.Bcereus
Bacillaceae.Bacillus.Bclausii
Bacillaceae.Bacillus.Bcoagulans
Bacillaceae.Bacillus.Bcoahuilensis
Bacillaceae.Bacillus.Bhalodurans

1全局選項 Global options (step 1)

運行下行命令

./step1.sh

你可以看到下圖:

image

和上圖相比,是不是明顯線條更粗了,也更美觀些。

step1.sh腳本執行以下命令:

# 在guide.txt樹上添加annot_0.txt的註釋,輸出整合文件爲guide_1.xml
graphlan_annotate.py --annot annot_0.txt guide.txt guide_1.xml
# 繪製位圖png
graphlan.py guide_1.xml step_1.png --dpi 300 --size 3.5
graphlan.py guide_1.xml step_1.svg --dpi 300 --size 3.5

第一個命令將annot_0.txt中的設置綁定到guide.txt樹,從而生成一個新樹:guide_1.xml。後面的命令僅生成兩個圖像:.png和.svg。

annot_0.txt包含以下定製參數:

clade_separation 0.5
branch_thickness 1.5
branch_bracket_depth 0.8
branch_bracket_width 0.25
clade_marker_size 40
clade_marker_edge_color #555555
clade_marker_edge_width 1.2

它們的意思分別是:

  • clade_separation 指定分支之間的分數間隔,該間隔與子樹之間的分支距離成比例。該選項可用於在視覺上分離更多相互分支深的分支。默認值爲0.0。本次設爲0.5,上圖各分枝類間的距離大於內部枝間距離,有各明顯的聚類感覺,也方便爲標籤預留空間
  • branch_thickness 設置連接分類單元的線的全局粗細。默認值爲0.75。本次設爲1.5,線寬比默認加粗了一倍
  • branch_bracket_depth 設置分支托架的相對位置,該分支托架是子分類單元分支所起源的徑向段。默認值爲1(官網標註爲0.25是錯誤的),分枝從節點延伸的長度,範圍0-1,大於1會超過上一節點顯示錯誤,這裏0.8比默認要好,層級關係更明確
  • branch_bracket_width 設置相對於最分開的子根的位置的分支括號的寬度。默認值爲0.25(官網標註爲1是錯誤的)。即分枝矩形上邊的寬,1爲矩形,0爲三角形;本次使用0.8爲梯形分枝比較美觀,畫面留白較少而且有成簇感
  • clade_marker_size:設置代表樹內進化枝根的標記的大小。默認值爲20.0。節點圈的大小。本次使用40比默認大一倍,最後可根據圖形整體大小調整優化
  • clade_marker_edge_color 設置標記邊框的顏色。默認值爲**#000000(即黑色),節點圈的顏色,這裏使用#555555(灰色)與枝分開**。
  • clade_marker_edge_width 設置進化枝標記的邊框粗細。默認值爲0.5,使用1.2加粗邊框些。

2節點選項 Node options (step 2)

執行時

./step2.sh

您將獲得以下樹:

image

step2.sh腳本執行以下命令:

graphlan_annotate.py --annot annot_1.txt guide_1.xml guide_2.xml
graphlan.py guide_2.xml step_2.png --dpi 300 --size 3.5
graphlan.py guide_2.xml step_2.svg --dpi 300 --size 3.5

第一個命令將annot_1.txt文件與上一步生成的樹:guide_1.xml 綁定在一起,將結果保存在guide_2.xml中。後兩個命令將生成兩種格式的輸出圖像。

annot_1.txt包含以下自定義:

Bacillus    clade_marker_color      b
Bacillus    clade_marker_size       120
Bacillus    clade_marker_shape      h

這些規範適用於規則“ GRAPHICAL TREE OPTIONS(圖型樹選項)”,並具有以下語法:

[clade_name{+|*|^}]   graphical_tree_option   graphical_tree_option_value

如果省略了進化枝名稱,則該選項將應用於所有進化枝。可以使用包含樹根所有名稱的完整標籤或僅使用最後一級來指定進化枝(如果最後一級名稱不是唯一的,則該命令會影響多個匹配進化枝)。

(可選)在進化枝名稱的末尾,可以添加以下字符之一:+,*,^。其中

  • *表示指定的進化枝及其所有後代均受該屬性影響;
  • +表示指定分支及其所有終端節點均受到影響;
  • ^表示指定進化枝的所有(唯一)終端節點均受到影響。

annot_1.txt中使用的graphic_tree_option是:

  • clade_marker_size 是表示樹內進化枝根的標記的大小。默認值爲20.0
  • clade_marker_color 指定表示樹內進化枝根的標記的填充色。默認值爲 #FFFFFF(即白色),b代表blue藍色
  • clade_marker_shape 提供進化枝標記的形狀。有關更多信息,請參見軟件包中readme.txt文件中的“ MARKER SHAPES”表,或見本文附錄。默認值爲’o’(即圓圈), h代表六角形

此外官網中還有些參數沒説,但很常用

  • clade_marker_label 設置節點內標籤(文字),一般顯示個1-2位數字非常好看
  • clade_marker_edge_color 設置節點邊顏色
  • clade_marker_font_color 節點標籤文字顏色,默認黑色

3標籤選項 Label options (step 3)

執行時

./step3.sh

您將獲得以下樹:

image

step3.sh腳本執行以下命令:

graphlan_annotate.py --annot annot_2.txt guide_2.xml guide_3.xml
graphlan.py guide_3.xml step_3.png --dpi 300 --size 3.5
graphlan.py guide_3.xml step_3.svg --dpi 300 --size 3.5

第一個命令將annot_2.txt中的設置綁定到guide_2.xml樹,從而生成一個新樹:guide_3.xml。後面的命令僅生成兩個圖像:.png和.svg。

annot_2.txt包含以下定製內容:

# 註釋文本和顏色 
Bacillus    annotation      Bacillus
Bacillus    annotation_background_color     b
# 註釋文本和縮寫、顏色 
Bbrevis     annotation      a:Brevibacillus brevis
Bbrevis     annotation_background_color     g
Blaterosporus       annotation      b:Brevibacillus laterosporus
Blaterosporus       annotation_background_color     g

這些規範適用於規則“ANNOTATION OPTIONS(註釋選項)”,語法如下:

[clade_name]  annotation_option       graphical_tree_option_value

我們註釋將陰影/背景色突出顯示分支和相應的子樹。註釋可以是彩色的,它們的透明度(alpha)通道可以進行整體調節,並具有與之關聯的標籤。

具體而言,annot_2.txt中使用的graphical_tree_option_value爲:

註釋指定要與註釋關聯並顯示的標籤。這可以採用幾種格式:

  1. str(不包含’:'的字符串)指定要完全(唯一)顯示在陰影上的字符串
  2. key:str(應爲短字符)將顯示在註釋底紋上,而完整的key:string標籤將報告爲外部圖例(a/b對應完整名稱的圖例)
  3. *:str 將自動生成一個縮寫並將其用作前一個key:str的情況
    • 進化枝的名稱(特別是最後一個分類學級別)將在上面的第一種情況下用作str
  4. : 代表上述前兩種情況的組合,自動將全稱變爲縮寫

annotation_background_color 定義註釋背景的顏色。默認爲灰色

4外部選項 External options (step 4)

執行以下命令:

./step4.sh

您將獲得以下樹:

image

step4.sh腳本執行以下命令:

graphlan_annotate.py --annot annot_3.txt guide_3.xml guide_4.xml
graphlan.py guide_4.xml step_4.png --dpi 300 --size 3.5 --pad 0.0
graphlan.py guide_4.xml step_4.svg --dpi 300 --size 3.5 --pad 0.0

第一個命令將annot_3.txt中的設置綁定到guide_3.xml樹,從而生成一個新樹:guide_4.xml。後面的命令僅生成兩個圖像:.png和.svg。

annot_3.txt包含以下內容:

ring_internal_separator_thickness   1       0.5
[..]
ring_width  1       0.5
ring_height 1       0.75
[..]
Bacillaceae.Anoxybacillus.Aflavithermus     ring_shape      1       v
[..]
Bacillaceae.Anoxybacillus.Aflavithermus     ring_alpha      2       0.423462136478
[..]
Bacillaceae.Anoxybacillus.Aflavithermus     ring_color      2       #AAAA00
[..]
Bacillaceae.Anoxybacillus.Aflavithermus     ring_height     5       2.48900854747
[..]
Bacillaceae.Bacillus.Bsubtilis      clade_marker_label      65
[..]
Bacillaceae.Bacillus.Banthracis     clade_marker_font_color w
Bacillaceae.Bacillus.Banthracis     clade_marker_edge_color b
[..]

這些規範適用於規則“RING OPTIONS(環選項)”。

我們稱其爲樹本身外部的圖形元素,可以看作是“圓形熱圖”,“圓形條形圖”,甚至更多(類似於指示符元素)。這些“環”直接鏈接到內部樹,因爲這些環的每個部分都對應於一個樹葉(並且還可能對應於內部節點)。可以爲同一張圖像指定多個環,每個環必須具有一個漸進的關聯編號(級別“ 1”是最內部的環)。
環的一般語法爲:

[clade_name] ring_option ring_level ring_option_value

如果clade_name不存在或如果*,則ring選項將應用於ring_level中的所有環扇區。 ring_level是必須始終指定的整數**。
**
在上面的示例中,ring_options在這裏使用:

  • ring_color 表示環段的顏色。默認爲黑色
  • ring_width 指定環段的寬度,該寬度是可用於特定進化枝的總圓形寬度的一部分。默認值爲1.0
  • ring_height 設置圓形線段的高度。如果未指定,則對級別中的所有圓環段應用相同的默認高度(*樹的0.1 大小),否則高度等於級別中的最大高度值。默認值是同一級別中環的最高高度,如果未指定高度,則爲0.1
  • ring_alpha 設置透明度值。 0.0表示完全透明(因此不可見),1.0表示完全不透明。默認值爲1.0
  • ring_shape 指定環的形狀。矩形的默認值爲R,這意味着將使用整個可用區域。當前的替代項是v或^,表示三角形(具有相反方向),可以用作突出特定進化枝的指向箭頭。默認爲R

一些其他的環選項涉及非類特定的方面,例如環本身的標籤或環之間的圖形分隔。這些選項在沒有樹名的情況下以以下樹列格式指定:

global_ring_option ring_level global_ring_option_value
  • ring_internal_separator_thickness 設置分隔不同環級別的圓線的粗細。這是指每個環兩側最內部的部分。默認值爲0.0,表示不存在

最後一行適用於規則“GRAPHICAL TREE OPTIONS”:

  • clade_marker_edge_color 指定標記邊框的顏色。默認值爲#000000(即黑色)
  • clade_marker_label 指定要插入指定進化枝的標籤
  • clade_marker_font_color 指定特定類標記標籤的字體顏色。默認值爲’k’,即黑色

其它示例Other examples

在這裏,我們要顯示其他示例(在程序的example示例文件夾中),以顯示GraPhlAn提供的靈活性和幾種自定義可能性。

人類微生物組計劃Human Microbiome Project

在人類微生物組中豐富的生物的系統樹上使用環形熱圖和條形圖。 顏色強度對應於每個身體部位的物種流行度; 圓外側的條形高度與分類單元的丰度成正比(參考文獻見 http://www.sciencedirect.com/science/article/pii/S016895251200145X)。

下圖數據位於example中的HMP_tree文件夾。

image

詳者注:上圖中結點加形狀、大小、顏色;外圈加熱圖、柱狀圖我們前面都有學過。

本次使用的是進化樹,它和物種註釋層級文件一樣使用即可。關於進化樹的GraPhlAn實戰,請參閱我們之前的教程 GraPhlAn進化樹

本圖中的文字標籤,需要在樹中存在對應的枝節點標籤。

我們查看一下注釋文件頭

cd examples/HMP_tree
head annot.txt

看到此表頭中一些新的參數

title   Human Microbiome Project species tree
title_font_size 33
total_plotted_degrees   340
annotation_background_alpha     0.1
start_rotation  270
branch_bracket_width    0.0
class_legend_font_size  24
annotation_legend_font_size     24      
annotation_background_separation        -0.03
annotation_background_offset    0.0
annotation_background_width     0.07
branch_thickness        2.5
ring_label      1       Stool (prevalence)
ring_label_color        1       #0000FF
  • title 圖表標題
  • title_font_size 標題字號
  • total_plotted_degrees 圖形面積,最大360佔整個圓,小於360則形成開口扇形,此處340度留20度給環形作標題區域
  • annotation_background_alpha 註釋背景的透明度,即有顏色,又讓文字顯示清楚
  • start_rotation 開始角度,可轉動圖形,調整開口僧
  • class_legend_font_size 類圖例文字大小
  • annotation_legend_font_size 註釋圖例文字大小
  • annotation_background_separation 註釋背景分開
  • annotation_background_offset 註釋背景偏移量
  • annotation_background_width 註釋背景寬度
  • ring_label 設置環形的標題
  • ring_label_color 設置環形的標題顏色

腸道微生物組 Gut microbiome

特種分類樹,比較HMP和MetaHIT的腸道微生物組。 特別是:顏色與生物標記進化枝的效應大小直接相關; 節點的大小反映了它們的相對丰度(參考文獻 http://www.nature.com/nmeth/journal/v9/n8/full/nmeth.2066.html)。

下圖是example文件夾中存在的gut_microbiome文件夾的參考。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-20xy3xlM-1582818813975)(http://210.75.224.110/Note/LiuYongXin/200227graphlan/gut_microbiome.png)]

這是一個典型的LEfSe分析的默認物種樹配色和樣式,詳見。

菌株水平分析 PhyloPhlAn

帶有分類註釋的高分辨率微生物生命樹。 比例表示總分支長度的標準化分數。 灰色標記表示具有至少10個基因組的屬的最低共同祖先。 外部條長度代表每個基因組中包含的400種蛋白質的分數。 紅色的外部三角形表示我們的方法預測的基因組在分類學上被誤貼標籤並且可以放心地替換。 藍色三角形表示有問題的標籤已經過精緻處理,但仍不屬於完全一致的類別; 綠色三角形表示我們有信心完善了其不完整分類標籤的基因組; 黑色三角形表示來自IMG-GEBA的566個基因組已被新放置到樹中(參考文獻 https://www.nature.com/articles/ncomms3304)。

下圖數據在example文件夾中的PhyloPhlAn文件夾。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bMABbV6w-1582818813976)(http://210.75.224.110/Note/LiuYongXin/200227graphlan/ppa_tol.png)]

炎症性腸病生物地理 IBD biogeography

顯示炎症性腸病生物地理學的分類樹。 具體來說,以下身體部位具有不同的顏色:迴腸末端,盲腸,右結腸,橫結腸,左結腸和乙狀結腸/直腸(參考 http://genomebiology.com/2012/13/9/R79)。

下圖參考了example文件夾中的IBD_biogeography文件夾。

image

完整參數列表 Complete list of parameters

有關GraPhlAn提供的可能配置的詳細列表,請查看軟件解壓文件夾中的readme.txt文件。

GraPhlAn與其他工具的集成
我們開發了一個名爲export2graphlan.py的自動轉換腳本,該腳本允許從LEfSe,MetaPhlAn2和HUMAnN輸入和/或輸出文件自動轉換爲GraPhlAn。 輸入文件也可以BIOM 2.0格式給出。

該轉換腳本的目的是支持生物學家,通過自動爲GraPhlAn編寫樹和註釋文件來幫助他們。 export2graphlan在GraPhlAn中作爲子目錄存在。 可以在此處找到一些說明如何使用它的示例:export2graphlan教程:http://210.75.224.110/Note/LiuYongXin/200227graphlan/export2graphlan%20-%20tutorial

支持 Support

我們通過Google網上論壇 https://groups.google.com/forum/#!forum/graphlan-users 爲GraPhlAn用戶提供支持,您也可以將任何問題通過電子郵件發送至 [email protected]

英文版更新於 2018-06-02

中文版更新於 2020-02-27

附錄

關於GraPhlAn的使用,請參閱我們之前的實戰教程

附錄1. 顏色

顏色有三種設置方法

  1. 顏色英文名稱

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

  1. 單個字母的縮寫

‘b’ (blue藍), ‘g’ (green綠), ‘r’ (red紅), ‘c’ (cyan青), ‘m’ (magenta洋紅), ‘y’ (yellow黃), ‘k’ (black黑), ‘w’ (white白)

  1. RGB模式顏色

    #rrggbb, 例如 #FF0000 代表紅色

附錄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.

猜你喜歡

寫在後面

爲鼓勵讀者交流、快速解決科研困難,我們建立了“宏基因組”專業討論羣,目前己有國內外5000+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入羣,務必備註“姓名-單位-研究方向-職稱/年級”。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍末解決羣內討論,問題不私聊,幫助同行。
image

學習擴增子、宏基因組科研思路和分析實戰,關注“宏基因組”
image

image

點擊閱讀原文,跳轉最新文章目錄閱讀
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章