张金龙的博客分享 http://blog.sciencenet.cn/u/zjlcas 物种适应性、分布与进化

博文

用phylotools建立supermatrix

已有 7287 次阅读 2019-10-29 09:41 |个人分类:软件介绍|系统分类:科研笔记

phylotools是用来建立DNA supermatrix矩阵的R程序包,是为了将比对好的基因文件(Fasta文件或Phylip文件)合并成超级矩阵(supermatrix)而编写的。

Supermatrix与Relaxed Phylip格式

supermatrix,就是将不同基因的片段分别比对后,再按照物种名合并形成的大型数据集,以便建立进化树用。

supermatrix一般为Relaxed Phylip格式。这是因为能够建立大型进化树的软件,如RAxML、Q-Tree等,都能识别这种格式。

Relaxed Phylip格式是Phylip格式的扩展,即第一行的两个数字分别声明序列数和位点数,两个数字中间有一个空格。第二行以序列名开始,序列名称和序列数据之间,有一个空格。传统的Phylip文件,序列名称只允许10个字符,如果超过10个字符,Phylip等软件在建树时会将名称截断,只取前10个字符。Relaxed Phylip格式则没有这种限制。

建立supermatrix的几个常用片段

为什么建立进化树要用多个DNA片段呢?这主要是因为DNA条形码的单个基因一般都太短,难以全面反映物种之间的关系,所以建立更为可信的进化树,一般需要更长的序列,即所谓多基因策略。

不同的序列,由于编码功能的差别,有些突变的速度快,有些速度慢。有些基因片段就较为稳定,在不同科属之间差异较小,而有些则变异很快,在同一个种不同个体之间都有很大的区别。在DNA条形码研究中,常用比较稳定的rbcLa基因确定植物物种的大致类群,一般可确定到科的水平;用matK等变异稍快的类群鉴定到属甚至到种的水平;用trnH-psbA等变异速率非常快的非编码基因确定更精确的种或种下的水平等。

上述三个DNA条形码序列,都是属于叶绿体基因组。当然,除上述基因外,还有很多别的基因,如ITS等也可用来建树。

DNA条形码序列一般是对PCR产物用传统的桑格测序法获得的,对样品和反应条件的要求较高,有一定的失败率。理想情况下, 一份样品的几个条形码序列都应该是完整的。但是由于各种各样的原因,有些种的某些序列总是不能正常扩增和测序,造成数据缺失。

supermatrix的基本内容

在建树开始之前,每个基因的序列需要单独比对,然后再拼接在一起。当然,这时候需要保证同一个种的不同序列要接在一起,但是位点的顺序不能错位。与此同时,若某一个种的某一个基因的序列缺失,则其对应的全部位点都需要用?补齐。

类似软件

用比对好的序列文件建立supermatrix,除了phylotools,还有以下软件:

  1. Biopython (https://biopython.org/wiki/Concatenate_nexus)

  2. Utensils (https://github.com/ballesterus/Utensils)

  3. Geneious (https://assets.geneious.com/manual/11.1/GeneiousManualsu53.html)

  4. catfasta2phyml (https://github.com/nylander/catfasta2phyml)

  5. SEDA (http://www.sing-group.org/seda/ , https://www.biostars.org/p/332853/)

  6. SuperMatrix: (http://coleoguy.blogspot.com/2015/04/r-concatenate-alignments-into.html)

  7. concat (https://figshare.com/articles/concatenation_R/3839538)

  8. AMAS (https://www.ncbi.nlm.nih.gov/pmc/articl::es/PMC4734057/)

其中Genious可以通过图形界面实现。

Phylotools的特点

  • phylotools全部用R写成,操作简单。

  • phylotools假设同一个种,在不同的fasta或者phylip文件中有相同的名称。

  • phylotools的supermatrix可以识别比对好的fasta文件或者phylip文件,生成的supermatrix以Relaxed Phylip格式保存。

phylotools的安装

phylotools的最新版保存在github上,而并未上传到CRAN。要安装phylotools,可使用如下命令:

devtools::install_github("helixcn/phylotools")

若未安装devtools,可使用 install.packages("devtools")安装

phylotools程序包函数列表

  • 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文件生成Relaxed Phylip格式的supermatrix

假设现有三个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文件生成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

 

 




https://blog.sciencenet.cn/blog-255662-1203863.html

上一篇:从DNA序列到系统发育多样性-在环保部环科院的讲座
下一篇:计算进化树末端节点出现的时间及两节点共同祖先(MRCA)的年龄
收藏 IP: 113.28.150.*| 热度|

1 吕婷

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 21:17

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部