實用的演化分析工具:ape package of R

2012年3月27日 星期二
0 意見
R 套件 ape 是筆者最近發現的一個非常好用的工具,它可以幫助你從事親緣關係 (phylogenetics) 和演化的分析研究。ape package 自從在 2004 年發表在 Bioinformatics 後,至今已有超過七百次的引用數,可以想見它的應用之廣泛與實用。

標題:APE:Analyses of Phylogenetics and Evolution in R language

就以測量兩條 DNA 序列的距離來說好了,ape 能夠彈指間幫你計算完成,真是大快人心。可以泡杯咖啡,想想晚上要看什麼戲劇了。

由於筆者目前有比對 DNA 序列的需要,所以底下會簡單介紹如何利用 ape package 計算多條序列之間的相似程度 (similarities of DNA sequences)。


輸入資料 (讀取檔案)

比對序列前,至少要先有 input 吧。ape 擁有讀取多種資料格式的函式,並且轉化成自己專屬的資料型態。目前它支援的檔案格式有 "interleaved", "sequential", "clustal", 和 "fasta"。我想後兩者應該是很多生資學生熟悉的吧。

您可以在 R console 裡輸入 ?read.dna 了解更多資訊和範例說明。為了方便解釋,筆者僅以 fasta format 為例:

### ... 建立一個擁有三條 DNA 序列的 fasta 檔案,
### ... 取名為 exdna.txt
cat("> No305",
"NTTCGAAAAACACACCCACTACTAAAANTTATCAGTCACT",
"> No304",
"ATTCGAAAAACACACCCACTACTAAAAATTATCAACCACT",
"> No306",
"ATTCGAAAAACACACCCACTACTAAAAATTATCAATCACT",
file = "exdna.txt", sep = "\n")
### ... 讀取 exdna.txt
ex.dna <- read.dna("exdna.txt", format = "fasta")



計算距離

我們使用 dist.dna() 計算多個序列間的距離。 您可以鍵入 ? dist.dna  或者到此網頁看更多資訊。dist.dna() 支援的 model 非常多,有 "raw", "N", "TS", "TV", "JC69", "K80" (the default), "F81", "K81", "F84", "BH87", "T92", "TN93", "GG95", "logdet", "paralin", "indel" 以及 "indelblock"。

不過我想最為人知的還是 1980 年 Kimura 所提出的 “Kimura's 2-parameters distance” model。在沒有特別指定 model 之下, K80 是 dist.dna() 的預設 model。

### ... 計算距離
dist.dna(ex.dna)

### 結果
           No305      No304
No304 0.05561282        
No306 0.02703361 0.02703361


等等

筆者調整了範例中的 DNA 序列,修修改改後意外地發現若提供了太短的序列的話,會出現「錯誤在obj[i, ] <- sequ : 被替換的項目不是替換值長度的倍數」的警示訊息,然後就卡關了。原因是什麼呢?原來是 read.dna() 原始碼之中有最短長度的限制。筆者手邊的序列長度皆不到 10 bp,而 read.dna() 卻設有長度限制。要如何破解它呢?



破解方法
先在 R console 裡輸入 read.dna 印出原始的函式,將程式碼複製,接著打開記事本或任何上手的文字編輯器,貼上 (不要保留 <environment: namespace:ape>)。

找到這一行,
   
pat.base <- "[-AaCcGgTtUuMmRrWwSsYyKkVvHhDdBbNn?]{10}"


把後面的 10 換成你想要的任意長度,比如改成 7 好了:
 
pat.base <- "[-AaCcGgTtUuMmRrWwSsYyKkVvHhDdBbNn?]{7}"


為了避免破壞原來的函式,我們將修改過後的函式重新定義為自己的函式,比方說, 改名為 seyna.read.dna() 好了。在程式碼開頭處,找到:

function (file, format = "interleaved", skip = 0, nlines = 0,
    comment.char = "#", seq.names = NULL, as.character = FALSE,
    as.matrix = NULL)
{

我們只需要放上新定義的函式名稱,其餘維持不變就好了 (修改過的地方為紅色處)

seyna.read.dna <- function (file, format = "interleaved", skip = 0, nlines = 0,
    comment.char = "#", seq.names = NULL, as.character = FALSE,
    as.matrix = NULL)
{

接著把筆記本上完整的程式碼複製貼上到 R console 裡,執行,讓 R 儲存此函式  。然後您就可以執行變更過長度限制的 seyna.read.dna(),讀取更短的 DNA 序列以進行比對囉

# ... 用自行定義的函式讀取 DNA 序列檔
ex.dna <- seyna.read.dna("exdna.txt", format = "fasta")
dist.dna(ex.dna)


更多

R 套件 Biostrings 是個強大的字串處理工具,也能做到類似的事情。只是其建立相似程度的模型並不包含基於 K80 等演化模型,多是 BLOSUM、PAM 或參數化的 nucleotideSubstitutionMatrix。然而使用者也可以自行定義 substitution matrix,以完成自己的任務。


閱讀更多 »

值得注目的 affinity propagation clustering

2012年3月26日 星期一
0 意見
近來有個問題在腦中逐漸成形,出現了將 DNA 序列做分群的需求,因此著手尋找有用的套件。結果我找到了 APCluster,一個基於 affinity propagation (AP) clustering 的 R 套件。什麼是 affinity propagation clustering?它很強大嗎?查閱了一下原始出處,才發現這個演算法竟然是發表於 2007 年的 《Science》。

標題:"Clustering by Passing Messages Between Data Points"


《科學》裡的核心概念

在開始談 AP clustering 之前,先聊聊知名且常被使用的 K-centers clustering 演算法。K-centers 演算法會從一些隨機取得的 "exemplars" (被當做 center 的 data points)開始,並且迭代調整更新每個集合以減少整體的 suqared error。這個方法對於初始選擇的 exemplars 很敏感,所以通常需要更換初始選擇並且重跑許多次以獲得好的解答。然而這樣做通常也只有在 clusters 的數目少且恰好初始時選的種子 (seeds) 夠好才會趨近好的解答。

他們的方法中的一個創舉是,「同時考慮全部的資料點為可能的 exemplars」!藉由點與點之間的遞迴地交換資訊 ─ "responsibilities" 與 "availavilities",讓各個節點能夠知道誰是最適合自己的 exemplar 以及自己有多大程度適合當 exemplar。

真是妙極了。

若想要知道較多實作的細節,不妨查閱原始論文。如果您偏好分析程式碼, AP cluster 也有 Matlab 的實作版本。在程式裡頭的註解檔,有交待了演算法的整體概念,比如:

Each cluster is represented by a data point called a cluster center, and the method searches for clusters so as to maximize a fitness function called net similarity. The method is iterative and stops after maxits iterations.
For N data points, there may be as many as N^2-N pair-wise similarities (note that the similarity of data point i to k need not be equal to the similarity of data point k to i). These may be passed to APCLUSTER in an NxN matrix s, where s(i,k) is the similarity of point i to point k.

APCluster:R 套件

AP clustering 演算法也被實作成了 R 的套件,發表在 2011 年的 Bioinformatics。

標題:APCluster: an R package for affinity propagation clustering.

其實這篇論文才是我的主角。想了想後,發現序列不能以有序數值表示,代表內建的 negDistMat( ) 在分群序列上頭是沒有意義的。若參考作者們在分析蛋白質 coiled coil 所採取的方式,還得詳細了解 Carsten et al. 在 2011 的研究工作才行 (似乎不脫離 BLAST pair-wise alignment 的計算分數)。
程式擁有其他內建的函式,能將資料視覺化


參考文件
APCluster 的參考文件有很多,底下僅列舉一些:

閱讀更多 »

研究演化的 R 套件:RPHAST

2012年3月23日 星期五
0 意見

筆者會注意到 PHAST 的原因首先是因為身邊同事使用 PhastCons 的輸出資料進行分析,然後接著因為自己手上新題目的需要而尋找適當的工具,結果找到了 RPHAST ─ 一個 R 版本的 PHAST。

RPHAST 的官方下載網頁:http://compgen.bscb.cornell.edu/rphast/
原始文件:PHAST and RPHAST: phylogenetic analysis with space/time models. Brief Bioinform (2011)
http://bib.oxfordjournals.org/content/12/1/41


沒用過倒算了,一試用才發現這實在是太好用了。與同樣頂頂大名的 PAML 相比,RPHAST 可說像是有視窗介面的 windows 3.1 ,而 PAML 則是醜陋又 bugy 的 DOS。RPHAST 提供了足夠充分的說明文件,而且安裝起來快速容易,真是揪感心啊。

若是需要分析基因體,官網裡的 vignette1.pdf 以內建的番茄第二號染色體為例,示範了讀取 alignments、features,以及用 PhyloFit, PhyloP 與 phastCons 評估 neutral model 的方法。簡單清楚。

僅僅  ~50 行的 R 程式碼,就能產出這張圖


USCS 的 Table Browser 裡也可以找到 phastCons table,只是很可惜地對 human genome 來說,只有提供 44 個物種的比對 (phastCons44wayPrimates)。但其實若只是想要 (ultra-) conserved region 的座標,在這裡拉拉選選就可以得到輸出,省去了自己執行程式的過程,也是很愜意啊。

PHAST,最早是 2002 年由 Cornell University 的助理教授 Adam Siepel 開啟的計畫,到 2006 年都陸續有相關著作,然而卻突然地中斷,直到 2010 年 Melissa J. Hubisz 的加入,在 2010 年和 2011 年大爆發在 Genome Research、 Briefings in Bioinfomatics 等期刊發表著作。 若您好奇 PHAST/RPHAST 與其他工具的差別,可以見其官方網頁"Comparison with Other Packages"

閱讀更多 »

另一則實驗:G-quadruplex 與轉錄因子 SP1 之結合

2012年3月12日 星期一
0 意見
《核酸研究》 (Nucleic Acids Research) 又刊出了一個關於 G-quadruplex 的文章。標題是「透過體外實驗,非典型的 DNA 結構是轉錄因子 SP1 的結合特徵序列」(A non-canonical DNA structure is a binding motif for the transcription factor SP1 in vitro)   

他們的研究與前人的研究有很大的差別在於,他們所使用的G-quadruplex 候選序列是只會形成兩個平面 (tetrad) 的,而不像之前人們多是採用會形成三個以上平面的候選序列。然而從他們的研究結果中他們認為,這種只會形成兩個平面的 G-quadruplex 在真實的細胞環境下有可能存在。它們被討論的太少了,不應該被如此忽視。   

已有前人展示過鋅手指(zinc-finger)蛋白質和 G-quadruplex 結合的能力。好玩的是,SP1 也是一個鋅手指蛋白質。而透過 DNA 突變的分析實驗,他們展示了 SP1 蛋白質除了辨識雙股 DNA 上的結合序列之外,也會將 DNA 是形成特殊結構的 G-quadruplex 視為結合的另一個對象。   SP1 蛋白質其中一個最短的辨識序列是 5'-GGGCGG-3',擁有相當多的鳥嘌呤(guanine)。他們的研究數據顯示 SP1 的結合位置有高達 77-87% 是和可能形成 G-quadruplex 的位置重疊的。   

更有甚者,之前科學家已發現 G-quadruplex 能夠限制 CpG 核苷酸的甲基化。Sp1 可能會透過和 G-quadruplex 結合,避免 DNA 序列後續的甲基化,達到調控基因的效果。   

「我們的研究展現了人們至今對於 SP1 蛋白質對於辨識結合上仍不了解的特質,未來可能被證明對於調控基因的表現至關重要」Balasubramanian 教授說道。  

原始文章: "A non-canonical DNA structure is a binding motif for the transcription factor SP1 in vitro"
Eun-Ang Raiber, Ramon Kranaster, Enid Lam, Mehran Nikan, and Shankar Balasubramanian Nucl. Acids Res. (2012) 40 (4): 1499-1508.


(本文同步刊載於生資櫥窗 BioWindow)
閱讀更多 »

測序儀大戰:GridION 和 MinION 出陣

2012年3月2日 星期五
0 意見


如果真如新華網的新聞稿所言 (英研製出"USB"基因組測序儀),能在串接的方式在 15 分鐘內以僅僅 5000 美元的代價定序完成人類的基因組,那未來定序儀的戰爭可會非常有趣了。儘管先前 Life technologies 已經率先宣成達到以 1000 美元定序人類基因組的目標 ("Ion Torrent claims to be first with $1K genome sequencer")。

但我不覺得 4% 的錯誤率與產品「一次性的特性」僅是「小小的瑕疵」。畢竟若要真能實際運用到學術研究上頭,相較於其他 I、L 公司不到 1% 的錯誤率,這個英國牛津納米孔技術公司的準確度就有點難以令人接受了。
閱讀更多 »
 

Categories

 

© 2010 取火之路, Design by DzigNine
In collaboration with Breaking News, Trucks, SUV