不出Rstudio, 实现从多序列比对到画进化树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不出Rstudio, 实现从多序列比对到画进化树相关的知识,希望对你有一定的参考价值。

参考技术A

这一步用到的包: biomaRt ,选择用symbol获取蛋白质序列。

检查一下,发现少了SIRT6.

会出现部分基因名匹配不到序列的情况,一般用 ENTREZ ID 可以避免这种情况。于是现在需要补上SIRT6的序列。

再和其他序列合并成一个数据框,去除unavailable序列。

给重复的基因名重命名:

输出为FASTA文件:

用到的包: Biostrings muscle ape

MUSCLE 算法的特点之一就是快,采用了k-mer的全局/成对比对方法,最后得出计分矩阵。
MUSCLE 在EBI的网页版工具传送门👉 https://www.ebi.ac.uk/Tools/msa/muscle/
MUSCLE 软件版传送门👉 http://www.drive5.com/muscle/downloads.htm

读入FASTA文件:

muscle多序列比对:

这一步一般比较费时。

当然 muscle() 有很多参数可以设置,提速或设定空位罚分等等:

修剪序列:

除此之外还可以用 rowmask() colmask() 手动设置masking区域。

画树!

分子进化树构建及数据分析方法介绍【转】

参考技术A

首先是方法的选择。
基于距离的方法有UPGMA、ME(Minimum Evolution,最小 进化 法)和NJ(Neighbor-Joining,邻接法)等。其他的几种方法包括MP(Maximum parsimony,最大简约法)、ML(Maximum likelihood,最大似然法)以及贝叶斯(Bayesian)推断等方法。其中UPGMA法已经较少使用。
一般来讲,如果模型合适,ML的效果较好。对近缘序列,有人喜欢MP,因为用的假设最少。MP一般不用在远缘序列上,这时一般用NJ或ML。对相似度很低的序列,NJ往往出现Long-branch attraction(LBA,长枝吸引现象),有时严重干扰 进化树 的构建。贝叶斯的方法则太慢。对于各种方法构建分子 进化树 的准确性,一篇综述(Hall BG. Mol Biol Evol 2005, 22(3):792-802)认为贝叶斯的方法最好,其次是ML,然后是MP。其实如果序列的相似性较高,各种方法都会得到不错的结果,模型间的差别也不大。
对于NJ和ML,是需要选择模型的。对于各种模型之间的理论上的区别,这里不作深入的探讨,可以参看Nei的书。对于蛋白质序列以及DNA序列,两者模型的选择是不同的。以作者的经验来说,对于蛋白质的序列,一般选择Poisson Correction(泊松修正)这一模型。而对于核酸序列,一般选择Kimura 2-parameter(Kimura-2参数)模型。如果对各种模型的理解并不深入,作者并不推荐初学者使用其他复杂的模型。
Bootstrap几乎是一个必须的选项。一般Bootstrap的值>70,则认为构建的 进化树 较为可靠。如果Bootstrap的值太低,则有可能 进化树 的拓扑结构有错误, 进化树 是不可靠的。
对于 进化树 的构建,如果对理论的了解并不深入,作者推荐使用缺省的参数。需要选择模型的时候(例如用NJ或者ML建树),对于蛋白序列使用Poisson Correction模型,对于核酸序列使用Kimura-2参数模型。另外需要做Bootstrap检验,当Bootstrap值过低时,所构建的 进化树 其拓扑结构可能存在问题。并且,一般推荐用两种不同的方法构建 进化 树,如果所得到的 进化 树类似,则结果较为可靠。
软件的选择 表1中列出了一些与构建分子 进化 树相关的软件。
构建NJ树,可以用PHYLIP(写得有点问题,例如比较慢,并且Bootstrap检验不方便)或者MEGA。MEGA是Nei开发的方法并设计的图形化的软件,使用非常方便。作者推荐MEGA软件为初学者的首选。虽然多雪列比对工具ClustalW/X自带了一个NJ的建树程序,但是该程序只有p-distance模型,而且构建的树不够准确,一般不用来构建 进化 树。
构建MP树,最好的工具是PAUP,但该程序属于商业软件,并不对学术免费。因此,作者并不建议使用PAUP。而MEGA和PHYLIP也可以用来构建 进化 树。这里,作者推荐使用MEGA来构建MP树。理由是,MEGA是图形化的软件,使用方便,而PHYLIP则是命令行格式的软件,使用较为繁琐。对于近缘序列的进化树构建,MP方法几乎是最好的。构建ML树可以使用PHYML,速度最快。或者使用Tree-puzzle,速度也较快,并且该程序做蛋白质序列的进化树效果比较好。而PAML则并不适合构建进化树。
ML的模型选择是看构出的树的likelihood值,从参数少,简单的模型试起,到likelihood值最大为止。ML也可以使用PAUP或者PHYLIP来构建。这里作者推荐的工具是BioEdit。BioEdit集成了一些PHYLIP的程序,用来构建进化树。Tree-puzzle是另外一个不错的选择,不过该程序是命令行格式的,需要学习DOS命令。PHYML的不足之处是没有win32的版本,只有适用于64位的版本,因此不推荐使用。值得注意的是,构建ML树,不需要事先的多序列比对,而直接使用FASTA格式的序列即可。
贝叶斯的算法以MrBayes为代表,不过速度较慢。一般的进化树分析中较少应用。由于该方法需要很多背景的知识,这里不作介绍。
表1 构建分子进化树相关的软件
软件

网址

说明

ClustalX

http://bips.u-strasbg.fr/fr/Documentation/ClustalX/

图形化的多序列比对工具

ClustalW

http://www.cf.ac.uk/biosi/research/biosoft/Downloads/clustalw.html

命令行格式的多序列比对工具

GeneDoc

http://www.psc.edu/biomed/genedoc/

多序列比对结果的美化工具

BioEdit

http://www.mbio.ncsu.edu/BioEdit/bioedit.html

序列分析的综合工具

MEGA

http://www.megasoftware.net/

图形化、集成的进化分析工具,不包括ML

PAUP

http://paup.csit.fsu.edu/

商业软件,集成的进化分析工具

PHYLIP

http://evolution.genetics.washington.edu/phylip.html

免费的、集成的进化分析工具

PHYML

http://atgc.lirmm.fr/phyml/

最快的ML建树工具

PAML

http://abacus.gene.ucl.ac.uk/software/paml.html

ML建树工具

Tree-puzzle

http://www.tree-puzzle.de/

较快的ML建树工具

MrBayes

http://mrbayes.csit.fsu.edu/

基于贝叶斯方法的建树工具

MAC5

http://www.agapow.net/software/mac5/

基于贝叶斯方法的建树工具

TreeView

http://taxonomy.zoology.gla.ac.uk/rod/treeview.html

进化树显示工具

需要注意的几个问题是:
其一,如果对核酸序列进行分析,并且是CDS编码区的核酸序列,一般需要将核酸序列分别先翻译成氨基酸序列,进行比对,然后再对应到核酸序列上。这一流程可以通过MEGA 3.0以后的版本实现。MEGA3现在允许两条核苷酸,先翻成蛋白序列比对之后再倒回去,做后续计算。
其二,无论是核酸序列还是蛋白序列,一般应当先做成FASTA格式。FASTA格式的序列,第一行由符号“>”开头,后面跟着序列的名称,可以自定义,例如user1,protein1等等。将所有的FASTA格式的序列存放在同一个文件中。文件的编辑可用Windows自带的记事本工具,或者EditPlus(google搜索可得)来操作。
文件格式如图1所示:
图1 FASTA格式的序列

NCBI的COG介绍:
什么是 COG ?
“ COG ”是Cluster of Orthologous Groups of proteins(蛋白相邻类的聚簇)的缩写。构成每个 COG 的蛋白都是被假定为来自于一个祖先蛋白,并且因此或者是 orthologs 或者是paralogs。Orthologs是指来自于不同物种的由垂直家系(物种形成)进化而来的蛋白,并且典型的保留与原始蛋白有相同的功能。Paralogs是那些在一定物种中的来源于基因复制的蛋白,可能会进化出新的与原来有关的功能。请参考文献获得更多的信息。
COG 分类是如何构建的?
COG 是通过把所有完整测序的基因组的编码蛋白一个一个的互相比较确定的。在考虑来自一个给定基因组的蛋白时,这种比较将给出每个其他基因组的一个最相似的蛋白(因此需要用完整的基因组来定义 COG 。注1)这些基因的每一个都轮番的被考虑。如果在这些蛋白(或子集)之间一个相互的最佳匹配关系被发现,那么那些相互的最佳匹配将形成一个 COG (注2)。这样,一个 COG 中的成员将与这个 COG 中的其他成员比起被比较的基因组中的其他蛋白更相像,尽管如果绝对相似性比较的。最佳匹配原则的使用,没有了人为选择的统计切除的限制,这就兼顾了进化慢和进化快的蛋白。然而,还有一个加的限制就是一个COG必须包含来自于3个种系发生上远的基因组的一个蛋白。
注1:仅仅应用在形成COG时,不包含新蛋白的信息。
注2:为了简化,许多步骤都省略的,请参考文献。
使用COG可以得到什么样的信息?
简单的说,有三方面的信息:
1,蛋白的注解。COG的一个蛋白成员的已知功能(以及二维或三维结构)可以直接应用到COG的其他成员上去。然而,这里也要警告,因为有些COG含有paralogs,它们的功能并非对应与那些已知蛋白。
2,种系发生图谱。这给出在一个特定的COG中一个给定物种是否存在某些蛋白。系统使用,这些图谱可以用来确定在一个物种中是否一个特定的代谢途径。
3,多重对齐。每一个COG页面包括了一个链接到COG成员的一个多重对齐,那可以被用来确定保守序列残基和分析成员蛋白的进化关系。
COG分类有哪些?
目前COG分类中每个字母代表的功能分类含义:
INFORMATION STORAGE AND PROCESSING
[J] Translation, ribosomal structure and biogenesis
[A] RNA processing and modification
[K] Transcription
[L] Replication, recombination and repair
[B] Chromatin structure and dynamics
CELLULAR PROCESSES AND SIGNALING
[D] Cell cycle control, cell division, chromosome partitioning
[Y] Nuclear structure
[V] Defense mechanisms
[T] Signal transduction mechanisms
[M] Cell wall/membrane/envelope biogenesis
[N] Cell motility
[Z] Cytoskeleton
[W] Extracellular structures
[U] Intracellular trafficking, secretion, and vesicular transport
[O] Posttranslational modification, protein turnover, chaperones
METABOLISM
[C] Energy production and conversion
[G] Carbohydrate transport and metabolism
[E] Amino acid transport and metabolism
[F] Nucleotide transport and metabolism
[H] Coenzyme transport and metabolism
[I] Lipid transport and metabolism
[P] Inorganic ion transport and metabolism
[Q] Secondary metabolites biosynthesis, transport and catabolism
POORLY CHARACTERIZED
[R] General function prediction only
[S] Function unknown

遗传密码的新排列和起源探讨
肖景发, 于军 中国科学院北京基因组研究所, 中国科学院“基因组科学及信息”重点实验室
摘要根据DNA核苷酸组分的动态变化规律将遗传密码的传统排列按 密码子 对GC和嘌呤含量的敏感性进行了重排. 新密码表可划分为两个半区(或1/2区)和四个四分区(或1/4区). 就原核生物基因组而言, 当 GC含量 增加时, 物种蛋白质组所含的氨基酸倾向于使用GC富集区和嘌呤不敏感半区所编码的氨基酸, 它们均使用四重简并密码, 对DNA序列的突变具有相对鲁棒性(Robustness). 当 GC含量 降低时, 大多数 密码子 处于AU富集区和嘌呤敏感半区, 这个区域编码的氨基酸具有物理化学性质的多样性. 因为当 密码子 第三位核苷酸(CP3)在嘌呤和嘧啶之间发生转换时, 密码子 所编码的氨基酸也倾向于发生变化.
关于遗传密码的 进化 存在多种假说, 包括凝固事件假说、共 进化 假说和立体化学假说等, 每种假说均试图解释遗传密码所表现出来的某些化学和生物学规律. 基于遗传密码的物理化学性质、基因组变异的规律和相关的生物学假说, 我们提出了遗传密码 分步进化假说 (The Stepwise Evolution Hypothesis for the Genetic Code). 在人们推断的最原始的RNA世界里, 原初(Primordial)遗传密码从只能识别嘌呤和嘧啶开始, 编码一个或两个简单而功能明确的氨基酸. 由于胞嘧啶C的化学不稳定性, 最初形成的遗传密码应该仅仅由腺嘌呤A和尿嘧啶U来编码, 却可得到一组七个多元化的氨基酸. 随着生命复杂性的增加, 鸟嘌呤G从主载操作信号的功能中释放出来, 再伴随着C的引入, 使遗传密码逐步扩展到12、15和20个氨基酸, 最终完成全部 进化 步骤.
遗传密码的 进化 过程同时也伴随以蛋白质为主体的分子机制和细胞过程的 进化 , 包括氨酰tRNA合成酶(AARS)从初始翻译机器上的脱离、DNA作为信息载体而取代RNA以及AARS和tRNA共 进化 等基本过程. 分子机制和细胞过程是生命的基本组成元件, 它们不但自己不断地趋于完善, 也促使生命体走着不尽相同的道路, 要么维持鲁棒性(Robustness, 如细菌), 要么寻觅多元化(Diversity, 如节肢动物和植物), 要么追求综合性(Complexity, 如脊椎动物).
自从 密码子 被全部发现以来, Crick[1]
就将遗传密码表排列成化学家所认可的形式. 尽管后来有些特殊表现形式的列方式(如同心圆、八卦式和二元密码等), 但其基本排布一直延续至今[1~3]
. 遗传密码以4个脱氧核糖核苷酸作为基本符号来组成遗传信息, 并以20个氨基酸作为基本结构单元来构建蛋白质. 遗传密码是使用4个碱基(两个嘌呤: 腺嘌呤A和鸟嘌呤G; 2个嘧啶: 尿嘧啶U和胞嘧啶C)构成的三联体 密码子 , 共64个, 分别对应20个氨基酸或翻译起始和终止信号. 生物体要将DNA分子中储存的信息内涵转变成功能内涵, 就要利用信使mRNA、解码分子tRNA和完整翻译机器等多重功能. 各种复杂分子机制和细胞过程的诞生和成熟一定会反映生命从RNA世界到RNA-蛋白质世界, 再到RNA-蛋白质-DNA世界逐渐转变的过程, 遗传密码作为一个独立的生物学机制也一定是漫长生命 进化 过程中的一个必然产物.
20世纪60年代初, 实验分子生物学最大的进展就是解码遗传密码, 发现它在生命有机体中, 基本是统一的. 自此不同的假设均试图解释遗传密码的信息和化学特性, 从简单的凝固事件假说到更复杂的统计学、共 进化 和立体化学理论. 凝固事件假说认为 密码子 与氨基酸的对应关系是在某个生命发生时段里被固定下来, 并且很难被改变[2]
, 这个假说一直被基于适应性、历史性和化学性的不同论点所挑战[4]
. 尽管关于遗传密码的 进化 也有人提出过不同的假设, 但是解释 密码子 的分配原则、物理化学性质的相关性和DNA组分变化对 密码子 使用频率的牵动, 从而揭示遗传密码表的生物学本质仍然是一个不小的挑战[2,5]
.
1 重排遗传密码表
重排遗传密码表有3个重要原因. 首先, DNA序列有4个最基本的可度量的变化, 即核苷酸序列、序列长度、 GC含量 和嘌呤(R或AG)含量. 假如把核苷酸序列和长度相对于时间的变化暂时不考虑, 那么只有后面的两个变量对于传统的遗传密码表具有影响力, 所以重排应该以GC和嘌呤含量的变化为主线. 但以前大家熟知的密码表排列只是为了简明和清晰地显示 密码子 和氨基酸的一一对应关系, 却忽略了密码表本身对氨基酸物理化学性质多样性的表现和DNA编码承受突变的鲁棒性等明显信息. 因此, 有必要把传统的密码表进行重新排列[6]
, 使其能够表现信息内涵和功能内涵之间的基本关系. 其次, 当 GC含量 和嘌呤含量变化时, 希望从密码表中找出相应蛋白质组成变化的线索. 图1展示了 GC含量 和嘌呤含量在极端状态下4个微生物基因组的氨基酸组分分布.

(1) RNA世界和早期遗传密码. RNA世界的存在首先被RNA分子具有相应催化功能的生物学特性所支持[22~26]
. 在RNA世界里, RNA具有双重的功能, 既是信息载体也是功能载体. 因为生命的基本分子机制和细胞过程起源于RNA世界, 所以没有理由说遗传密码不起源于RNA世界. 在RNA世界里RNA分子可以组成简单的核苷酸多聚物, 这种多聚物在近亿年的成熟期里, 为生命提供了足够的功能上的复杂性和多样性. 原始细胞可以通过相互争斗和吞噬获得基本的组成成分,因此基于模板的RNA合成可能对于生命的初始不是必需的. 可以想象这些RNA分子可以通过简单的聚合酶来合成, 通过自身剪接或化学修饰转变为其他相似的结构, 从而达到结构的可变性和功能的多样性. 此外, RNA的编辑(RNA Editing)也一定起了非常重要的作用, 这一分子机制一直延续到现在, 在包括人类在内的高级物种中仍然存在.
在现代生物世界里, 剪接体(Spliceosome)通常是用于RNA分子的剪接, 由蛋白质和RNA分子组成. 可以做两个假设, 生命可能起源于类真核有机体的原型细胞(在DNA引入之前)而不是类原核有机体的原型细胞. 在RNA组成的翻译机器(Translational Machinery)没有形成之前, 初始遗传密码可能不是必需的. 一旦这个初始生命进入到RNA-蛋白质组成的世界时, 多肽才逐渐按照密码子开始有序合成, 遗传密码就开始发挥其作用了. 可以认为有序的生命可以在与相对无序生命的争斗中更容易获胜和取得繁衍的空间.
现在可以推测初始遗传密码在RNA世界存在和 进化 的基本过程和起源时的基本逻辑关系. 初始生命一定比较简单, 分子间相互作用也比较宽松, 最小的编码系统可能只要区分嘌呤R和嘧啶Y就够了. 假定现代密码在生命的早期阶段已经被统一并相对忠实地继承了RNA密码的基本关系, 这个可能的原始编码就至少有7个氨基酸(I和M视为等同; 图5), 同时也有起始和终止密码子. 这7个氨基酸的侧链具有广泛的物理化学性质(氨基、酰基、苯环、羟基、酚基、烃链和甲硫基等), 但是没有小的和酸性的氨基酸. 可以推测: 体积小的氨基酸在初始蛋白质相互作用中的作用显然不如大的重要, 而碱性氨基酸的功能对于酸性DNA则是显而易见的. 另外的一种可能性是氨基酸与tRNA以及AARS之间的关系不是十分明确, 一个密码子对应多氨基酸的情况可能在遗传密码成熟前是普遍存在的[27]
. 由于7个氨基酸的编码区处于现代密码表的AU富集区, 可以确信初始密码子始于这个区域, 后来扩展到嘌呤敏感区即所谓趋变半区. 这个阶段的存在既复合由简到繁的逻辑, 也迎合了实验的证据, 那就是C的不稳定性和G在RNA操作功能上的作用[21, 28~29]
.

(3) 遗传密码的第二次拓展. 当GU和AG从作为剪接信号功能释放出来以后(剪接体的结构和功能随着蛋白质的演变而复杂化和精密化), 遗传密码引入了Arg, Ser和Val. 氨基酸的个数变成15个, 这次扩展是对已经存在的氨基酸物理化学性质和二级结构特性的扩展. Arg是Lys的替代体, Ser则对应Tyr, Val是疏水性氨基酸Leu, Ile和Met的补充[32~35]
.
最具吸引力的是六重简并的3个氨基酸Arg, Leu和Ser. 这些氨基酸在被引入后, 又由于核苷酸C在RNA世界的应用而扩展出各自的新四联码, 成为六重简并. 首先, Leu是在现代基因组中包括所有三界生物在内最丰富的氨基酸, Ser是真核生物第二丰富的氨基酸, Arg也是一个富有的氨基酸, 通常在细菌基因组中位于前10位. 其次, Leu在二重简并密码和四重简并之间最容易转换, 只需要通过简单U到C转换(UUR-CUR)即可, 这也说明Leu对于大多数蛋白质来说是用于当 GC含量 增加时维持蛋白质功能的完整性. 这些观察引出相应的假设: 这3个氨基酸的附加密码是为了当 GC含量 或AG含量增加时平衡富有氨基酸, 相应的密码分布按照平衡遗传密码的蛋白质多样性和蛋白质鲁棒性二等分. 这种平衡能力用于当编码序列突变发生时稳定蛋白质的氨基酸组成, 从而维护蛋白质结构的完整性.
(4) 遗传密码的最终拓展. 遗传密码的最终拓展是在DNA作为信息载体取代RNA使得信息载体具有更高的准确性和稳定性, 同时也产生了最为关键的从RNA到DNA的逆转录机制. 基于模板的DNA复制机制开辟了新的DNA-蛋白质-RNA世界. 很多新分子机制的 进化 包括DNA复制和修复、RNA的转录等, 使这个生物界里分子机制和细胞过程更趋于多元和完善. 同时当C和其脱氧衍生物分别作为结构模板加入RNA和DNA时, 标准遗传密码也就随之产生并被固定下来. 遗传密码本身得到新的补充并且编码能力有了很大提高. 组氨酸(His)和Glu立刻加入进来, 主要是由于它们具有相应的催化性质以及和原有的两个碱性氨基酸的相似性, Thr扩展了Ser的功能, 同时使蛋白质的结构增加了精细度, Ala同Ser相比具有类似的体积和尺度, 但其和Ser比具有很强的疏水性质[32,33]
. 这些新引入的氨基酸在蛋白质结构和功能多样性上起到非常关键的作用. 不容怀疑的是Pro的最后加入, 它具有其他氨基酸所不具备的性质, 即通过特有的方式使蛋白质的骨架结构扭曲达到蛋白质结构的紧密折叠. 相应的扩展模式在AARS同样得到支持遗传密码扩展的假设, 除了3个六重简并的遗传密码外, 这次共有六组遗传密码最终被引入, 同时编码6个氨基酸. 这6个氨基酸的AARS分类按照G和I 的配对原则延伸而来. 例如AARS对于双重编码的氨基酸His(CAR)和Gln(CAY)的对应, Glu(GAR)和Asp(GAY)的对应等.
遗传密码的 进化 就是密码子的有序发生和合理分布, 这个分布的合理性一定经过一个复杂选择过程. 首先, 通过长时间的创造和优化, 使其在基因组核苷酸序列发生突变时对蛋白质的结构起到缓冲的作用; 第二, 密码子采取这样一种特殊的排布方式: 当DNA组成从AU富集区到GC富集区改变时, 氨基酸的分布倾向于从具有催化性质的氨基酸转到具有结构性质的氨基酸; 第三, 充分利用密码子第三位多变的优势(通常体现在R和Y之间的转换), 来改变编码氨基酸的物理化学性质, 致使在趋变半区里大约有15个氨基酸对第三个位置R和Y之间的转换呈现敏感.
(5) 分子机制与细胞过程的 进化 . 尽管分子机制与细胞过程的根本界限有时会很模糊, 但还是将它们分开: 前者强调物理性的相互作用、发生的空间和组分的存在, 后者强调化学反应的结果、发生的时间和过程. 从一方面讲, DNA的变异显然是细胞过程的产物, 遗传密码的发生和最终形成也是它的产物. 从另一方面讲, 密码子与氨基酸的关系影响到细胞的蛋白质组分的变化, 即分子机制的变化[21]
. 比如, 如果在RNA世界需要产生多个拷贝的RNA分子, 一定需要一个分子机制来实现. 在现代生物世界里, 通常是由以DNA为模板的转录机制来完成, 但在RNA世界里没有RNA的复制, 多个RNA分子产生是由多聚酶和编辑体(Editosome)共同来完成的. 也许就是那个最原始的细胞机制. RNA世界的第二个分子机制发明可能是就剪接体, 这个分子机制在现代生物世界里仍然在发挥其重要的作用. 第三个分子机制也许是翻译体(Translatosome)的形成, 其用于直接进行蛋白质分子的加工, 这一分子机制是从原始的RNA世界到成熟的RNA世界再到现代生物世界里转折的重要标志. 在转折期里, 分子机制在蛋白质精确度的变化中不断完善和复杂, 直到DNA通过RNA和蛋白质的复合体引进到生命世界

以上是关于不出Rstudio, 实现从多序列比对到画进化树的主要内容,如果未能解决你的问题,请参考以下文章

病毒进化树构建

多序列比对并建树-ClustalW

扩增子分析解读6进化树 Alpha Beta多样性

R语言实现生物序列的降维比对

MEGA 构建进化树步骤

基于最短路方法的生物序列比对问题研究