使用Treetime分析tMRCA和進化速率

2021-02-14 生信雀

前言:分析一組序列的tMRCA和進化速率,主要這幾類方法:①Regression of root-to-tip distances (軟體TempEst 或者軟體 Treetime),②least-squares dating(LSD,速度快,適合大數據), ③Scalable relaxed clock phylogeneticdating (Treedater),④Bayesian inference(貝葉斯分析,通過軟體beast完成)。

    其中通過軟體Beast分析tMRCA和進化速率在本人之前的《Beast v1.8使用手冊》中已經提到,這裡重點介紹Regression of root-to-tip distances(RTT)裡的treetime軟體包分析tMRCA和進化速率。

 參考文獻:Estimating evolutionary rates using time-structured data: a general comparison of phylogenetic methods》,《TreeTime: Maximum-likelihood phylodynamic analysis》,《A comparison of methods for estimating substitution rates from ancient DNA sequence data 》

1.這幾類方法的區別(1)假設前提

  TempEst 和 Treetime以及LSD假設序列符合嚴格分子鐘,而BEAST默認是假設序列符合寬鬆分子鐘。

(2)適用範圍

  ①RTT方法的適用於進化速率低的情況;估計分子鐘速率時,當物種多樣性低時TreeTime和LSD比BEAST表現好;當物種多樣性高時,BEAST表現好,TreeTime表現最差,物種多樣性對beast的影響不大

   ②序列數量對Treetime、LSD、BEAST的影響

 

 ③LSD可以處理在不同譜系之間具有明顯水平速率變化的數據,LSD分析大數據集時速度快,而BEAST則非常慢。

2.Treetime的使用(1)在線版https://treetime.biozentrum.unibas.ch/ ①網站提供了示例數據,我們可以用示例數據看下效果:

 ①我們選擇第一個「Time-tree inference」

 這裡需要我們準備三個文件,newick格式的樹文件(通過其他軟體建好的ML樹)、fasta格式的對齊序列文件、時間文件,示例數據文件格式如下附件:

📎data.zip

 需要注意的是,三個文件裡的序列名稱要一致。

 默認是GTR模型,也可以進行其他模型設置:

 我們先用網站提供的示例數據跑下看下效果:(通過點擊「Example datasets」預覽示例數據)

            我們選擇流感H3N2的HA基因,測試下,Load後點擊下面的Run.

            耐心等待幾分鐘:

  

 

 ②結果:(點擊放大更清晰)

 

 ③結果解讀

  左下角的圖,μ 代表進化速率,如示例數據是3.921e-3(/site/year) ,R² 代表相關係數,示例數據為0.586。在上圖中,我們可以看到,隨著時間的增大,不同序列的Distance to root值也大致呈線性變化,表明這些序列具有時間結構;同時,不同譜系的序列之間良好的線性關係表示在不同譜系之間進化速率差別不大,說明這些序列可能適合嚴格分子鐘。

  遺憾的是雖然圖很美,似乎還提供了結果打包的zip文件,但是,zip文件裡沒有提供圖片。沒有圖片倒問題不大,如果結果裡提供數據也可以自己做,比如zip裡的樹文件倒是可以用FigTree美化下,效果也還過得去。可是,zip文件裡沒有上圖左下角的圖片的數據(這張可以看進化速率和分子鐘類型的圖片非常重要),這是在線版的一個非常大的bug,所以,建議用本地版的Treetime。

 (2)在Linux上運行Treetime

   FAQ:我的電腦是windows系統,沒有linux怎麼辦?

   如果你的電腦是win10系統,那就好辦了,可以免費安裝win10的分發版linux子系統,安裝教程見下:

   https://www.windows10.pro/bash-on-ubuntu-on-windows/

   這種方式,你可以簡單理解為在你的win10系統上多裝了一個軟體。

   其實筆者也不想在liunx上運行這個程序,遺憾的是,windows版本的Treetime筆者沒有找到和結果輸出相關的參數,換句話說,windows版本的Treetime可以跑數據,但是不知道結果輸出在哪裡?實時界面雖然有一部分結果,但是不是想要的,於是先以linux版本的Treetime為例,以後找到了再補充windows版本的Treetime使用說明。

  Treetime這個程序是python包。

①Linux上安裝Treetime

 安裝方法非常簡單,但是前提是你Linux系統上已經安裝了pip和biopython(pip和biopython的安裝方式見本人的「Linux學習筆記」知識庫)

先切換到管理員帳號,再在命令端輸入下面命令:

 pip install phylo-treetime

 系統提示安裝完成後,再在python裡輸入import treetime檢查下是否安裝成功,如下:

如果在python裡輸入import treetime沒有報錯則表示treetime包已經安裝成功。

②運行Treetime

linux系統命令終端輸入treetime -h 查看幫助文檔(注意不是在python裡

部分截圖如下:

 裡面有每個參數的介紹,其中指定輸出結果的位置的參數就是下面這個:

比如還有指定進化模型的參數是--gtr等等。

③功能

(i)Timetrees

The to infer a timetree, i.e. a phylogenetic tree in which branch length reflect time rather than divergence, TreeTime offers implements the command:

$ treetime --aln <input.fasta> --tree <input.nwk> --dates <dates.csv>

```

This command will infer a time tree, ancestral sequences, a GTR model, and optionally confidence intervals and coalescent models.

A detailed explanation is of this command with its various options and examples are available at [treetime_examples/timetree.md](http://github.com/neherlab/treetime_examples/blob/master/timetree.md)

(ii)Rerooting and substitution rate estimation

To explore the temporal signal in the data and estimate the substitution rate (instead if full-blown timetree estimation), TreeTime implements a subcommand `clock` that is called as follows

$ treetime clock --tree <input.nwk> --aln <input.fasta> --dates <dates.csv> --reroot least-squares

```

The full list if options is available by typing `treetime clock -h`.

Instead of an input alignment, `--sequence-length <L>` can be provided.

Documentation of additional options and examples are available at [treetime_examples/clock.md](https://github.com/neherlab/treetime_examples/blob/master/clock.md)

(iii)Ancestral sequence reconstruction

The subcommand

 $ treetime ancestral --aln input.fasta --tree input.nwk

```

will reconstruct ancestral sequences at internal nodes of the input tree.

The full list if options is available by typing `treetime ancestral -h`.

A detailed explanation of `treetime ancestral` with examples is available at [treetime_examples/ancestral.md](https://github.com/neherlab/treetime_examples/blob/master/ancestral.md)

(iv) Homoplasy analysis

Detecting and quantifying homoplasies or recurrent mutations is useful to check for recombination, putative adaptive sites, or contamination.

TreeTime provides a simple command to summarize homoplasies in data

$ treetime homoplasy --aln <input.fasta> --tree <input.nwk>

```

The full list if options is available by typing `treetime homoplasy -h`.

Please see [treetime_examples/homoplasy.md](https://github.com/neherlab/treetime_examples/blob/master/homoplasy.md) for examples and more documentation.

(v)Mugration analysis

Migration between discrete geographic regions, host switching, or other transition between discrete states are often parameterized by time-reversible models analogous to models describing evolution of genome sequences.

Such models are hence often called "mugration" models.

TreeTime GTR model machinery can be used to infer mugration models:

$ treetime mugration --tree <input.nwk> --states <states.csv> --attribute <field>

注意:以上黑體部分只是各功能最簡單的模板,具體參數請參考help文檔。

④示例數據

以官網提供的示例數據包裡的ebola數據為例

 打開linux終端,創建文件夾out為用來輸出結果的文件夾。再輸入treetime的運行命令:

treetime --aln ebola.fasta --tree ebola.nwk --dates ebola.metadata.csv --outdir out

正常運行效果如下:

耐心等待。運行完成後界面有結果提示:

使用上面簡單的參數實際輸出結果中含有下面這些:

📎root_to_tip_regression.pdf📎timetree.pdf

 (a) root_to_tip_regression.pdf是下面這個:

    可以看出這些數據具有時間結構,且不同譜系序列之間良好的線性關係表明其可能適合嚴格分子鐘。其中進化速率為7.98e-04+/- 1e-04(/site/year),tMRCA為:2013.9+/- 0.13(year)

   (b)timetree.pdf是下面這個:

 

  PDF文件是矢量圖,可用軟體AI進行修改微調。

  (c) 覺得上面這棵時間樹不好看,可以用結果裡的timetree.nexus文件,使用FigTree打開,重新繪製下。

 

(d)ancestral_sequences.fasta裡有預測的每個節點的祖先序列。

3.注意點

    Treetime這個軟體預先利用每條序列的採樣時間進行分子鐘校準來計算這些數值,所以可以用來查看這些序列是否具有時間結構,如果具有時間結構,那麼它估算的tMRCA和進化速率是有意義的;如果這些序列不具備時間結構,那麼它估算的tMRCA和進化速率則沒有意義。詳情請參考文首第一篇參考文獻。

 

                                                                                                          2019年1月15日初稿

轉載請註明出處。如有錯誤,歡迎及時與我反饋。

長按關注

微信公眾號生信雀



相關焦點

  • 手把手教你用 Fast Tree 快速構建序列進化樹
    而對於遠緣序列,一般使用最大似然法或鄰接法。對相似度很低的序列,鄰接法往往出現 Long-branch attraction(LBA,長枝吸引現象),嚴重幹擾進化樹的構建。對於各種方法構建分子進化樹的準確性,Hall 認為貝葉斯的方法最好,其次是最大似然法,然後是最大簡約法。其實如果序列的相似性較高,各種方法結果差別不大。最大似然法和鄰接法需要選擇模型。
  • 使用ggtree實現進化樹的可視化和注釋
    進化樹看起來和層次聚類很像。有必要解釋一下兩者的一些區別。層次聚類的側重點在於分類,把距離近的聚在一起。而進化樹的構建雖然也可以說是一個聚類過程,但側重點在於推測進化關係和進化距離(evolutionary distance)。
  • 克隆排序和進化可視化R包:ClonEvol
    ClonEvol可以處理測序和數據分析中可能會歪曲個體變異的細胞流行率評估的統計不確定性和錯誤。應該在運行之前使用其他工具(簡要描述如下)完成步驟①-②。下面對以上步驟進行詳細介紹(1)Step 1: 為克隆進化推斷準備variants測序的深度、樣本的數量和質量以及體細胞變異的數量和質量可能對由此產生的克隆進化模型產生深遠的影響。
  • 化學反應速率和化學平衡圖像分析
    這是化學反應速率和化學平的最後一個小知識點,專題很多是對知識點內容的分析和總結,在考試中也很經常遇到,需要同學們記住的點也很多,同學們可以結合之前的知識點一同記憶,相信很快就可以掌握了!一、速率—壓強(或溫度)圖像曲線的意義是外界條件(如溫度、壓強等)對正、逆反應速率影響的變化趨勢及變化幅度。如圖中交點A是平衡狀態,壓強增大,正反應速率增大得快,平衡正向移動。
  • 一文解決蛋白質家族分析及進化樹構建
    然而,序列中的保守區域一般不會覆蓋到序列整體,因此對於一些具有複雜結構的基因當使用只針對局部保守序列的統計學模型進行預測時往往產生的結果數量過多,序列之間的差異加大。如果要確認一組同源基因的功能相關性,還需要藉助系統發育分析的方法來幫助判斷。
  • ggtree使用大全,進化樹編輯、美化一手資料全掌握
    進化樹展示的是進化關係,簡單說就是親緣關係,通常是使用物種的遺傳序列(如 DNA 序列、胺基酸序列等)來構建的。進化樹看起來和層次聚類很像,這兩者有木有區別呢?上圖展示的是典型的系統發育樹。進化樹數據格式進化樹的數據格式有多種,常見的有 Newick、NEXUS 及 Phylip。Newick 格式Newick 格式是最常見的使用最廣泛的進化樹數據格式。
  • 進化樹作圖專題:進化樹的幾種分類
    本期承接上期進化樹作圖專題1的內容,和大家分享一下關於進化樹圖的幾種分類。 依據不同規則,樹的分類可以有很多種。由於本專題主要針對於作圖,所以這裡主要的原則就是——樹的外形。所謂「根」,就是一棵樹上的所有基因或物種的最近共同祖先(most recent common ancestor,MRCA)。
  • Green thumb spruces up Bangladesh one tree at a time
    JESSORE, Bangladesh - Ohid Sarder prises a rusted nail from a tree and drops it into his bucket, another eyesore scrubbed from the countryside as he embarks on a one-man mission
  • The Fir-Tree
    'Rejoice in your youth,' said the sunbeams, 'rejoice in the sweet growing time, in the young life within you.'
  • In the tree和on the tree搭配辨析
    從以上例子中可以看出,對in the tree 和on the tree的語法辨析表現在對修飾詞的不同,且各書中的所舉例句大有雷同,這兩則例句未能在根本上解釋兩個詞組的區別,並且,對詞組的用法介紹也過於簡單。       事實上,in the tree和on the tree的用法比詞典中列舉的要複雜的多。
  • 詳解進化樹
    系統發育分析中,最重要和最常見的內容為構建系統發育樹。
  • Linux Device Tree(三):代碼分析(1)
    2、傳遞運行時參數傳遞以及platform的識別流程分析3、如何將Device Tree Structure併入linux kernel的設備驅動模型。註:本文中的linux kernel使用的是3.14版本。 二、如何通過Device Tree完成運行時參數傳遞以及platform的識別功能?
  • in the tree和on the tree的意思都是「在樹上」,那有何區別?
    不過,今天暫且不去細論介詞的語法功能如何,而是主要分享這兩個介詞短語的用法,即:in the tree和on the tree。此時,或許有同學會問:兩個短語的意思都是「在樹上」,有何不同嗎?當然有不同,切莫混淆通用。首先,舉兩個例句,如:
  • 試題研究文章|化學反應速率的深度分析
    曲線識別、文字描述分析)、圖表P-tc-t文字分析分析壓強變化原因aa-t識別a-P-T圖分析、火山型圖像分析文字描述c-t新點 反應歷程 電化學電化學元素知識、、快慢反應碰撞理論、轉化率、百分含量等)Kc/Ksp的計算)寫表達式 分析投料比、外因對轉化率的影響 Ksp/Kx計算式及其與平衡常數的關係、速率方程算速率外界條件的選擇(溫度、壓強、濃度、投料比、催化劑等)因變量:速率、平衡常數、(平衡)轉化率
  • A boy and his tree一個男孩和他的樹
    推薦一個非常好的生活情感和教育類公眾號:黃先捷(ieltssimon)
  • 跟著Nature microbiology學畫圖~R語言ggtree展示進化樹
    所以論文中實際的數據做的是聚類分析,而並不是進化樹。他這裡做聚類分析也能夠獲得每個節點對應的支持率。這個如何實現我暫時還不知道。為了模仿這個圖,下面的輸入數據我直接使用進化樹文件了,因為構建進化樹的時候能夠很方便的獲得節點的支持率信息。
  • 雙語:男孩和樹(A Boy and His Tree)
    A long time ago, there was a huge apple tree. A little boy loved to come and play around it every day.
  • [精品文摘]-The Apple Tree
    A long time ago, there was a huge apple tree. A little boy loved to come and lay around it everyday.
  • 英語美文欣賞:A Boy and His Tree 男孩和樹
    A long time ago, there was a huge apple tree. A little boy loved to come and play around it every day.