DNA条码,是利用聚合酶链式反应(PCR)及测序手段,将每个物种筛选出特定的一个或基因,共同组成的物种鉴定系统。DNA条形码在不同的类群中选取的基因不同,例如植物中常用的DNA条码相关的基因多为叶绿体中的基因,常包括rbcLa, matK, ITS, 5.8S, trnH-psbA等等,各基因的进化速率不同,互相参考,以便于对物种的准确鉴定。如果这一体系建立的比较精准,那么以后只需要对样品的相应基因进行PCR就可以实现对物种的准确鉴别。相比传统的依据物种形态的鉴别手段,应用的范围更加广泛。
然而DNA序列的fasta文件及比对之后的phylip文件处理是较为繁琐。特别是在处理测序后fasta文件中DNA序列的名称,以及后续的建立进化树的步骤中,往往需要名字的替换,并建立相应的矩阵,并以此作为基础推断物种之间的进化关系。在分子生物地理学和进化生态学中,这种需求更为迫切。为了更为方便得分析处理DNA-Barcoding所得的序列,方便得更改名称,处理比对后的各序列拼接成一致性的矩阵等,必须开发相应的软件。
有鉴于此,本人利用开源的R语言开发了phylotools软件包。其中的函数均为笔者在处理DNA-Barcoding数据时用到的函数。现在已经上传到R的CRAN网站。全部源代码及多种平台上的程序包都可以在CRAN上获得。网址为
http://cran.r-project.org/web/packages/phylotools/index.html
下面简要介绍一下各函数的主要功能,供业界的同行参考:
complement()
给出给定DNA序列的反向互补序列,输入格式为字符串。fasta.split()
给出各名称分组的对照表,将给定的fasta文件分割成几个独立的fasta文件phy2dat()
将phylip文件转换成相应的数据框,以便进行相应的处理read.phylip()
读取序列比对好之后的phylip文件rename.fasta()
为fasta对象中的序列改名。reverse()
给出该序列的反向序列seq2fasta()
将seq文件(一般是 SeqMAN生成)转换成fasta文件sub.tip.label()
给出各名称的对照表,将进化树末端的名称替换。supermat()
基于指定的phy文件构建多个基因的超级矩阵uniquefasta()
将fasta文件中名称重复的序列删除。write.mat()
将建立好的超级矩阵保存在本地硬盘上。
当然,还有很多功能需要进一步实现,如在GenBank上检索并下载DNA序列等等。如您在使用过程中发现程序中的任何错误,欢迎发邮件及时告知。