欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

简化版:高效处理多个序列比较结果,打造稳健的进化树建造法

最编程 2024-08-09 14:07:58
...

写在前面

年初在汕头婚宴上,我问一个朋友,现在在做什么工作。他回复了我:

但行好事,莫问前程。

现在看来,挺好。

构建进化树的基础是序列对齐,或者说多序列比对。做序列对齐的主要目的是,确定所有序列的同源位点相互对应。目前存在各种各样的多序列比对算法,但是不存在一个算法能够绝对地保证其能进行完美的位点对应。此外,我们还需要考虑,我们用于比对的序列可能存在一些错误或者删除和缺失。所以,一般在我们得到多序列比对结果之后,用于进化树构建之前,我们会多序列比对结果进行修剪。

针对多序列比对修剪,目前存在各种各样的操作,其中包括:

  1. 人工修剪,换句话说,看心情,想删除哪些就删除哪些
  2. 删除所有含有gaps的位点,大体也可以人工删除
  3. 删除不保守位点,比如使用G-blocks等软件
  4. 删除含有一定比例gaps的位点,比如使用MEGA内置的算法
  5. 按照位点信息量进行删除,比如使用trimAL
    ...

基于个人的项目经验,一般我们都直接使用trimAL。而早前课题组的师弟师妹在做一些家族鉴定工作时,提到能否在界面下(windows/macOS)使用trimAL。我一直没做回应。不过我觉得这个事情过于简单。所以在某一天,我已经将其打包进去。于是,现在TBtools中存在三个多序列比对结果的修剪逻辑

  1. 按照一定比例删除gaps,模仿mega
  2. 删除不保守位点,参考G-blocks的文献,我重新用Java写的
  3. trimAL,这个软件还在更新,所以我选择直接调用

功能界面如下



从图片上来看,这三个功能都只是

  • 输入文件或者直接黏贴文本(对于trimAL,我加了自动识别多序列比对格式识别功能,支持的格式很多,包括faslta,clw....)
  • 输出文件或者直接输出文本(对于trimAL,支持多种输出格式,faslta,clw....)
  • 一定的参数控制
  • 隐藏功能,剪切完自动可视化剪切结果

输入的多序列比对结果



输出的剪切后的结果


写在后面

并没有太多需要说的。我也不想花过多的时间,介绍这个使用起来过于简单的工具