目的:分析同源基因的进化情况
做法:
- 获取同源基因编码的氨基酸序列
- 序列比对
- 构建进化树
- 绘制进化树
下面逐步进行拆解:
1. 获取氨基酸序列
可以利用某个物种已知的蛋白质序列,在NCBI blastp进行search,然后将search的结果保存为fasta文件
2. 序列比对
使用多序列比对工具(Multiple Sequence Alignment, MSA)对这些氨基酸序列进行比对。常用的MSA工具包括:
- Clustal Omega: 适用于大规模的序列比对。
- MUSCLE: 高精度且快速的多序列比对工具。
- MAFFT: 适合于长序列的多序列比对。
如果只是想展示几个物种间序列一致性,可以使用SnapGene
3. 构建进化树
根据多序列比对的结果,构建进化树。常用的方法包括: - 邻接法(Neighbor-Joining, NJ): 简单且快速,适合大规模数据。
- 最大似然法(Maximum Likelihood, ML): 精度较高,但计算复杂度大。
- 贝叶斯推断法(Bayesian Inference, BI): 精度高且可估计不确定性,但计算时间长。
4. 绘制进化树
使用专门的软件或工具绘制进化树,常用的软件包括: - MEGA (Molecular Evolutionary Genetics Analysis): 综合性较强的序列分析和进化树构建工具。
- PhyML: 基于最大似然法构建进化树。
- MrBayes: 基于贝叶斯推断法构建进化树。
- FigTree: 进化树可视化工具。
- iTOL (Interactive Tree Of Life): 在线进化树绘制和注释工具。
可以选择一些工具组合成流程:
组合1. Clustal Omega + MEGA + FigTree
- 多序列比对:Clustal Omega
你可以在线使用Clustal Omega或在本地安装并运行Clustal Omega进行多序列比对。
输入序列文件(例如 sequences.fasta),生成比对结果(例如 sequences.aln)。 - 构建进化树:MEGA
将比对结果导入MEGA软件,选择构建进化树的方法(例如邻接法或最大似然法)。
MEGA界面友好,可以进行参数设置和结果调整。 - 绘制进化树:FigTree
将MEGA生成的树文件导入FigTree,进行进化树的可视化。
FigTree提供丰富的可视化选项,可以对树形、颜色、标签等进行调整。
组合2. MUSCLE + PhyML + iTOL
- 多序列比对:MUSCLE
在本地运行MUSCLE进行多序列比对。
输入序列文件(例如 sequences.fasta),生成比对结果(例如 sequences.aln)。muscle -in sequences.fasta -out sequences.aln
- 构建进化树:PhyML
将比对结果导入PhyML,选择构建进化树的方法(例如最大似然法)。
PhyML在命令行运行,可以指定多种参数。phyml -i sequences.aln -d aa
- 绘制进化树:iTOL
将PhyML生成的树文件上传到iTOL在线工具。
iTOL提供丰富的在线注释和可视化选项,可以对树形、颜色、标签等进行调整。
组合3. MAFFT + RAxML + FigTree
- 多序列比对:MAFFT
在本地运行MAFFT进行多序列比对。
输入序列文件(例如sequences.fasta
),生成比对结果(例如sequences.aln
)。mafft --auto sequences.fasta > sequences.aln
- 构建进化树:RAxML
将比对结果导入RAxML,选择构建进化树的方法(例如最大似然法)。
RAxML在命令行运行,可以指定多种参数。raxmlHPC -s sequences.aln -n output -m PROTCATLG
- 绘制进化树:FigTree
将RAxML生成的树文件导入FigTree,进行进化树的可视化。
FigTree提供丰富的可视化选项,可以对树形、颜色、标签等进行调整。使用 Biopython
from Bio.Align.Applications import ClustalOmegaCommandline, MuscleCommandline, MafftCommandline from Bio.Phylo.Applications import PhymlCommandline, RaxmlCommandline from Bio import Phylo # Step 1: 多序列比对(选择一个工具) # Clustal Omega clustalomega_cline = ClustalOmegaCommandline(infile="sequences.fasta", outfile="sequences.aln", verbose=True, auto=True) clustalomega_cline() # 或者 MUSCLE muscle_cline = MuscleCommandline(input="sequences.fasta", out="sequences.aln") muscle_cline() # 或者 MAFFT mafft_cline = MafftCommandline(input="sequences.fasta") mafft_cline(stdout="sequences.aln") # Step 2: 构建进化树(选择一个工具) # PhyML phyml_cline = PhymlCommandline(input="sequences.aln", datatype="aa") phyml_cline() # 或者 RAxML raxml_cline = RaxmlCommandline(sequences="sequences.aln", model="PROTCATLG", name="output") raxml_cline() # Step 3: 绘制进化树(以FigTree为例) tree = Phylo.read("output.tree", "newick") Phylo.draw(tree)
重要文件格式
muscle 生成的 aln 文件格式是什么样的
MUSCLE(Multiple Sequence Comparison by Log-Expectation)生成的比对结果文件(.aln)通常是以CLUSTAL格式(即ClustalW格式)保存的。以下是一个典型的MUSCLE生成的CLUSTAL格式的示例:
CLUSTAL O(1.2.4) multiple sequence alignment
seq1 MKTAYIAKQRQISFVKSHFSRQDILDLWIYHTQGYFPQFL
seq2 MKTAYIAKQRQISFVKSHFSRQDILDLWIYHTQGYFPQFL
seq3 MKTAYIAKQRQISFVKSHFSRQDILDLWIYHTQGYFPQFL
seq1 RNAPLIWKRKRQIQKKSLKQKNNIQEQLSKDDTKEIKDLR
seq2 RNAPLIWKRKRQIQKKSLKQKNNIQEQLSKDDTKEIKDLR
seq3 RNAPLIWKRKRQIQKKSLKQKNNIQEQLSKDDTKEIKDLR
seq1 KLKH
seq2 KLKH
seq3 KLKH
文件格式说明
头部信息:
文件开始部分有一个CLUSTAL的标识,通常后面会跟着版本信息,例如CLUSTAL O(1.2.4)。
序列块:
序列按块排列,每块一般包含固定数量(例如60个)的氨基酸残基。
每个块内,序列名称和序列本身按列对齐。
相同位置的相同氨基酸会在对齐标识线上显示一个标识(一般是空格)。
对齐标识:
每个块的下面有一行对齐标识线。对于相同位置的相同氨基酸,通常用星号(*)标识;对于类似氨基酸,有时用点(.)或冒号(:)标识。
生成ALN文件后,可以使用这些工具和软件来进一步分析和绘制进化树:
- MEGA:可以直接导入ALN文件进行进化树构建。
- PhyML:也支持CLUSTAL格式的输入。
- RAxML:需要将ALN文件转换为兼容格式(例如PHYLIP)。
- FigTree 或 iTOL:用于进化树的可视化。