||
phylotools是用来建立DNA supermatrix矩阵的R程序包,是为了将比对好的基因文件(Fasta文件或Phylip文件)合并成超级矩阵(supermatrix)而编写的。
supermatrix,就是将不同基因的片段分别比对后,再按照物种名合并形成的大型数据集,以便建立进化树用。
supermatrix一般为Relaxed Phylip格式。这是因为能够建立大型进化树的软件,如RAxML、Q-Tree等,都能识别这种格式。
Relaxed Phylip格式是Phylip格式的扩展,即第一行的两个数字分别声明序列数和位点数,两个数字中间有一个空格。第二行以序列名开始,序列名称和序列数据之间,有一个空格。传统的Phylip文件,序列名称只允许10个字符,如果超过10个字符,Phylip等软件在建树时会将名称截断,只取前10个字符。Relaxed Phylip格式则没有这种限制。
为什么建立进化树要用多个DNA片段呢?这主要是因为DNA条形码的单个基因一般都太短,难以全面反映物种之间的关系,所以建立更为可信的进化树,一般需要更长的序列,即所谓多基因策略。
不同的序列,由于编码功能的差别,有些突变的速度快,有些速度慢。有些基因片段就较为稳定,在不同科属之间差异较小,而有些则变异很快,在同一个种不同个体之间都有很大的区别。在DNA条形码研究中,常用比较稳定的rbcLa基因确定植物物种的大致类群,一般可确定到科的水平;用matK等变异稍快的类群鉴定到属甚至到种的水平;用trnH-psbA等变异速率非常快的非编码基因确定更精确的种或种下的水平等。
上述三个DNA条形码序列,都是属于叶绿体基因组。当然,除上述基因外,还有很多别的基因,如ITS等也可用来建树。
DNA条形码序列一般是对PCR产物用传统的桑格测序法获得的,对样品和反应条件的要求较高,有一定的失败率。理想情况下, 一份样品的几个条形码序列都应该是完整的。但是由于各种各样的原因,有些种的某些序列总是不能正常扩增和测序,造成数据缺失。
在建树开始之前,每个基因的序列需要单独比对,然后再拼接在一起。当然,这时候需要保证同一个种的不同序列要接在一起,但是位点的顺序不能错位。与此同时,若某一个种的某一个基因的序列缺失,则其对应的全部位点都需要用?
补齐。
用比对好的序列文件建立supermatrix,除了phylotools,还有以下软件:
Biopython (https://biopython.org/wiki/Concatenate_nexus)
Utensils (https://github.com/ballesterus/Utensils)
Geneious (https://assets.geneious.com/manual/11.1/GeneiousManualsu53.html)
catfasta2phyml (https://github.com/nylander/catfasta2phyml)
SEDA (http://www.sing-group.org/seda/ , https://www.biostars.org/p/332853/)
SuperMatrix: (http://coleoguy.blogspot.com/2015/04/r-concatenate-alignments-into.html)
concat (https://figshare.com/articles/concatenation_R/3839538)
AMAS (https://www.ncbi.nlm.nih.gov/pmc/articl::es/PMC4734057/)
其中Genious可以通过图形界面实现。
phylotools全部用R写成,操作简单。
phylotools假设同一个种,在不同的fasta或者phylip文件中有相同的名称。
phylotools的supermatrix可以识别比对好的fasta文件或者phylip文件,生成的supermatrix以Relaxed Phylip格式保存。
phylotools的最新版保存在github上,而并未上传到CRAN。要安装phylotools,可使用如下命令:
devtools::install_github("helixcn/phylotools")
若未安装devtools,可使用 install.packages("devtools")
安装
clean.fasta.name
用于清除fasta序列名中的特殊字符,以便建树的时候能够正常输入和显示
dat2fasta
将读取为data.frame的DNA序列转换为fasta文件
dat2phylip
将读取为data.frame的DNA序列转换为phylip格式
get.fasta.name
获取fasta文件中所有序列的名称
get.phylip.name
获取phylip文件中所有序列的名称
read.fasta
读取fasta文件
read.phylip
读取phylip文件
rename.fasta
重命名fasta文件
rm.sequence.fasta
从fasta文件中删除某一条特定的序列
split_dat
根据序列所在的分组,将数据分成独立的fasta文件,例如,可用于trnH-psbA序列按照目(orders)分组
sub.taxa.label
替换进化树中的物种名
supermat
用已经比对好的fasta文件或者phylip文件建立supermatrix超级矩阵以及RAxML分隔文件。
假设现有三个Phylip文件,分别编码不同的基因,建立者三个基因的supermatrix,并保存为Relaxed Phylip格式,同时生成RAxML Partition File,记录每个基因的起讫位点。
相应代码如下:
cat("6 22", "seq_1 --TTACAAATTGACTTATTATA", "seq_2 GATTACAAATTGACTTATTATA", "seq_3 GATTACAAATTGACTTATTATA", "seq_5 GATTACAAATTGACTTATTATA", "seq_8 GATTACAAATTGACTTATTATA", "seq_10 ---TACAAATTGAATTATTATA", file = "matk.phy", sep = "\n") cat("5 15", "seq_1 GATTACAAATTGACT", "seq_3 GATTACAAATTGACT", "seq_4 GATTACAAATTGACT", "seq_5 GATTACAAATTGACT", "seq_8 GATTACAAATTGACT", file = "rbcla.phy", sep = "\n") cat("5 50", "seq_2 GTCTTATAAGAAAGAATAAGAAAG--AAATACAAA-------AAAAAAGA", "seq_3 GTCTTATAAGAAAGAAATAGAAAAGTAAAAAAAAA-------AAAAAAAG", "seq_5 GACATAAGACATAAAATAGAATACTCAATCAGAAACCAACCCATAAAAAC", "seq_8 ATTCCAAAATAAAATACAAAAAGAAAAAACTAGAAAGTTTTTTTTCTTTG", "seq_9 ATTCTTTGTTCTTTTTTTTCTTTAATCTTTAAATAAACCTTTTTTTTTTA", file = "trn1.phy", sep = "\n") supermat(infiles = c("matk.phy", "rbcla.phy", "trn1.phy"))
要使用比对好的fasta文件生成supermatrix, 则命令改为对应的fasta文件名即可:
cat( ">seq_1", "--TTACAAATTGACTTATTATA", ">seq_2", "GATTACAAATTGACTTATTATA", ">seq_3", "GATTACAAATTGACTTATTATA", ">seq_5", "GATTACAAATTGACTTATTATA", ">seq_8", "GATTACAAATTGACTTATTATA", ">seq_10", "---TACAAATTGAATTATTATA", file = "matk.fasta", sep = "\n") cat( ">seq_1", "GATTACAAATTGACT", ">seq_3", "GATTACAAATTGACT", ">seq_4", "GATTACAAATTGACT", ">seq_5", "GATTACAAATTGACT", ">seq_8", "GATTACAAATTGACT", file = "rbcla.fasta", sep = "\n") cat( ">seq_2", "GTCTTATAAGAAAGAATAAGAAAG--AAATACAAA-------AAAAAAGA", ">seq_3", "GTCTTATAAGAAAGAAATAGAAAAGTAAAAAAAAA-------AAAAAAAG", ">seq_5", "GACATAAGACATAAAATAGAATACTCAATCAGAAACCAACCCATAAAAAC", ">seq_8", "ATTCCAAAATAAAATACAAAAAGAAAAAACTAGAAAGTTTTTTTTCTTTG", ">seq_9", "ATTCTTTGTTCTTTTTTTTCTTTAATCTTTAAATAAACCTTTTTTTTTTA", file = "trn1.fasta", sep = "\n") supermat(infiles = c("matk.fasta", "rbcla.fasta", "trn1.fasta"))
Kress, W. J., Erickson, D. L., Jones, F. A., Swenson, N. G., Perez, R., Sanjur, O., & Bermingham, E. (2009). Plant DNA barcodes and a community phylogeny of a tropical forest dynamics plot in Panama. Proceedings of the National Academy of Sciences, 106(44), 18621-18626.
裴男才, 张金龙, 米湘成, 葛学军 (2011) 植物DNA条形码促进系统发育群落生态学发展, 生物多样性, 19(3):284–294
Roquet, C., Thuiller, W., & Lavergne, S. (2013). Building megaphylogenies for macroecology: taking up the challenge. Ecography, 36(1), 13-26.
https://cme.h-its.org/exelixis/web/software/raxml/index.html
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 09:18
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社