2009年5月6日 星期三

Partitioned Bayesian analyses

這是MrBayes的進階使用,如果你的資料是很多段基因或是混和了型態和分子的資料,請使用這種分析方法。原文是MrBayes的wiki

Analyzing a Partitioned Data Set分析一組分段的資料
因為MrBayes可以處理非常多樣的資料和model,甚至是互相混合後也可以分析,因此這個範例主要在說明怎麼處理一組合併的資料,包括來自於30個癭蜂taxa的四段基因和型態資料,而且包含有外群。而這個簡單的方式就是設定不同基因的partitioned analysis(分段分析)。這個範例使用cynmix.nex作為處理的資料。

Getting Mixed Data into MrBayes把一組混合的資料匯入MrBayes中
首先,用Windows的筆記本或是其他的文字編輯器打開Nexus檔案,在Data block裡面應該會看到像是這樣的文字:Format datatype=mixed(Standard:1-166,DNA:167-3246) interleave=yes gap=- missing=?;。這跟之前用的primates.nex是不同的。這段文字表示在1-166的資料是Standard(morphology)而167-3246這些則是DNA資料。而datatype是mixed可能只適用於MrBayes 3,其他軟體可能無法辨識這個datatype。而這組資料是交錯的(interleaved),通常mixed data都用interleaved format來表示,也就是每一個block包含了一組資料,像是型態資料或是一段基因的資料。

Dividing the Data into Partitions把資料作分段
在預設裡面,MrBayes會根據data type作分段,而在這組資料只有兩種data types,所以這組資料在預設裡面就只會分成一段morphology (standard)和一段DNA。可是因為DNA還包含不同基因,因此還要進行另外的分段。我們當然可以在MrBayes慢慢下指令,不過如果使用MrBayes的block會更方便,你可以另外用文字編輯器產生一個cynmix-command.nex的檔案,然後輸入這些指令:
 #NEXUS

 begin mrbayes;
   execute cynmix.nex;
   charset morphology = 1-166;
   charset COI = 167-1244;
   charset EF1a = 1245-1611;
   charset LWRh = 1612-2092;
   charset 28S = 2093-3246;
   partition favored = 5: morphology, COI, EF1a, LWRh, 28S;
   set partition = favored;
 end;

其中partition favored = 5: 1-166, 167-1244, 1245-1611, 1612-2092, 2093-3246這樣也可以,不過很不方便,後面分析也不容易使用。儲存好檔案後,輸入execute cynmix-command.nex就可以了。

Specifying a Partitioned Model指定一個分段的model
開始指定分段的model之前,先看一下預設的model是什麼,請輸入showmodel指令,你會看到這樣的表:
  Active parameters:

                      Partition(s)
     Parameters       1  2  3  4  5
     ------------------------------
     Statefreq        1  2  2  2  2
     Topology         3  3  3  3  3
     Brlens           4  4  4  4  4
     ------------------------------
我們可看到有五個分段,四個active的參數。有兩個stationary state frequency的參數(1和2),一個是給型態資料(parameter 1)而另一個是給DNA資料(parameter 2)。還有一個topology的參數(3),以及一個branch length的參數(4)。而topology和branch length在5個分段的參數都一樣。

現在,假設我們要讓每一個基因的分段都使用GTR + Γ + I model,而且每一段基因都要有各自的參數,而且我們也希望不同的分段有不同的演化速率(overall evolutionary rate),而我們要假設型態資料為gamma-shaped rate variation。我們所需要的指令是lset和prset,而會用到applyto的機制,讓我們可以讓這些設定應用在不同的分段。例如我們要把GTR + Γ + I model應用在DNA分段的話,我們可以輸入lset applyto=(2,3,4,5) nst=6 rates=invgamma,然後再輸入showmodel看看結果如下:
Active parameters:

                      Partition(s)
     Parameters       1  2  3  4  5
     ------------------------------
     Revmat           .  1  1  1  1
     Statefreq        2  3  3  3  3
     Shape            .  4  4  4  4
     Pinvar           .  5  5  5  5
     Topology         6  6  6  6  6
     Brlens           7  7  7  7  7
     ------------------------------
如同你所看到的,所有DNA分段都有了正確的model,但是所有的參數(statefreq, revmat, shape, pinvar)在不同的基因卻全部都連結在一起了。為了要讓不同的基因有獨立的參數設定,請輸入unlink statefreq=(all) revmat=(all) shape=(all) pinvar=(all)。而為了要讓型態資料設定為Gamma-shaped rate variation,請輸入lset applyto=(1) rates=gamma。而最狡猾的部份是要讓不同的分段有不同的overall rate,而這個可以用ratepr指令來設定,這個指令是在prset底下的指令。在預設裡面,ratepr設定為fixed,也就是所有partitions都有一樣的overall rate。為了要讓這個參數變成可變,請輸入prset applyto=(all) ratepr=variable

到目前為止設定大概完成了,不過還有最後一件事情要考慮。傳統的型態資料並沒有包含所有型態的types。具體來說,型態資料的矩陣通常沒有包含任何不變的型態(constant/invariable) characters)。有時候子孫獨有型質(autapomorphies)也不會現在型態資料的矩陣,而矩陣裡面只有最簡約資訊的特徵(parsimony-informative characters)。而對於MrBayes來說,我們就必須提醒程式這一點來讓運算不會產生偏差。在預設裡面,MrBayes假設型態資料為可變而沒有不變的特徵。如果有需要,可以使用lset coding設定這個部份,不過在教學範例裡面我們維持預設值。最後,輸入showmodel,應該會看到這個格:
  Active parameters:

                      Partition(s)
     Parameters       1  2  3  4  5
     ------------------------------
     Revmat           .  1  2  3  4
     Statefreq        5  6  7  8  9
     Shape           10 11 12 13 14
     Pinvar           . 15 16 17 18
     Ratemultiplier  19 19 19 19 19
     Topology        20 20 20 20 20
     Brlens          21 21 21 21 21
     ------------------------------

Running the Analysis分析
設定好以後,可以跟之前的教學一樣跑分析就可以了,不過cynmix.nex這個資料需要跑長一點的分析。此外,也可以把分段的指令放在資料檔案裡面,不過把分段指令獨立出來有很多好處。

沒有留言:

張貼留言