Mafft安装使用教程(MAFFT-7.526)
教程写于2025年2月19日,目前mafft最新版是7.526
The latest version is 7.526 (2024/Apr)
常用比对软甲比较(文献报道的):
比对速度(Muscle>MAFFT>ClustalW>T-Coffee)
比对准确性(MAFFT>Muscle>T-Coffee>ClustalW)
个人推荐使用MAFFT比对软件
一、安装
使用conda 安装
首先创建conda虚拟环境:
conda create -n mafft
然后激活环境:
conda activate mafft
然后安装:
conda install conda-forge::mafft
然后查看软件版本:
mafft --version
二、MAFFT 最简使用教程
1、使用--auto
选项
--auto
选项是MAFFT中最简单且强大的功能之一,它会根据输入序列的数量自动选择最适合的比对策略(在速度和准确性之间平衡)。对于大多数用户来说,这是最推荐的默认设置。
基本命令:
mafft --auto input.fasta > output.fasta
说明:
input.fasta
:输入文件,必须是FASTA格式。output.fasta
:输出文件,比对结果将以FASTA格式保存。--auto
:自动选择比对策略。
2、设置多线程
MAFFT支持多线程计算,可以通过--thread
选项指定线程数,从而加速比对过程。
命令示例:
mafft --auto --thread 4 input.fasta > output.fasta
说明:
--thread 4
:指定使用4个线程进行计算。你可以根据计算机的CPU核心数调整线程数。例如,如果你的计算机有8核CPU,可以设置为--thread 8
。- 注意:多线程加速效果在序列数量较多时更为明显。
3、最简使用示例
假设你有一个名为input.fasta
的序列文件,包含多条氨基酸或核苷酸序列,你可以使用以下命令进行比对:
mafft --auto --thread 4 input.fasta > output.fasta
这条命令会:
- 自动选择最适合的比对策略。
- 使用4个线程加速计算。
- 将比对结果保存到
output.fasta
文件中。 - 也可设置
--thread -1
会自动使用计算机所有可使用CPU。
4、输出格式(可选)
如果你需要将结果保存为Clustal格式,可以添加--clustalout
选项:
mafft --auto --thread 4 --clustalout input.fasta > output.clustal
5、总结
- 最简命令:
mafft --auto input.fasta > output.fasta
- 多线程加速:
mafft --auto --thread [线程数] input.fasta > output.fasta
- 输出Clustal格式:
mafft --auto --thread [线程数] --clustalout input.fasta > output.clustal
三、MAFFT 详细使用教程
1、常规使用
以下是MAFFT的常用设置,适合大多数用户快速上手:
快速比对(适用于大量序列)
如果需要快速比对大量序列(如>2000条),推荐使用FFT-NS-1方法。该方法速度非常快,但牺牲了一定的准确性。
mafft --retree 1 --maxiterate 0 input.fasta > output.fasta
或使用简写命令:
fftns input.fasta > output.fasta
说明:
--retree 1
:仅构建一次引导树。--maxiterate 0
:不进行迭代优化。- 适用于序列数量较多(>2000条)的场景。
平衡速度与准确性的比对(中等数量序列)
对于中等数量的序列(如200-2000条),推荐使用FFT-NS-i方法。该方法通过两轮迭代优化,平衡了速度和准确性。
mafft --retree 2 --maxiterate 2 input.fasta > output.fasta
或使用简写命令:
fftnsi input.fasta > output.fasta
说明:
--retree 2
:构建两次引导树。--maxiterate 2
:进行两轮迭代优化。- 适用于序列数量适中的场景。
高准确性比对(少量序列)
如果序列数量较少(<200条),且需要高准确性,推荐使用L-INS-i或G-INS-i方法。这两种方法通过迭代精修,能够获得较高的比对准确性。
-
L-INS-i(局部优化):
mafft --localpair --maxiterate 1000 input.fasta > output.fasta
或使用简写命令:
linsi input.fasta > output.fasta
-
G-INS-i(全局优化):
mafft --globalpair --maxiterate 1000 input.fasta > output.fasta
或使用简写命令:
ginsi input.fasta > output.fasta
说明:
--localpair
或--globalpair
:分别使用局部或全局比对算法。--maxiterate 1000
:进行最多1000轮迭代优化。- 适用于对准确性要求较高的场景。
分组比对
如果需要将两个已对齐的序列组进行比对,可以使用mafft-profile
命令:
mafft-profile group1.fasta group2.fasta > output.fasta
或使用以下命令:
mafft --maxiterate 1000 --seed group1.fasta --seed group2.fasta /dev/null > output.fasta
说明:
group1.fasta
和group2.fasta
是已对齐的序列组。/dev/null
用于忽略输入文件中的其他序列。
2、详细参数
以下是MAFFT的详细使用说明,包括参数解释和使用场景。
算法选择
MAFFT提供了多种比对算法,根据不同的需求选择合适的算法:
- FFT-NS系列:
- FFT-NS-1:非常快,适合大量序列(>2000条),但准确性较低。
- FFT-NS-2:较快,适合中等数量的序列(200-2000条),通过两轮迭代优化提高准确性。
- FFT-NS-i:通过多次迭代优化,进一步提高准确性,但速度较慢。
- INS-i系列:
- L-INS-i:局部优化,适合局部可比对的序列,准确性高。
- G-INS-i:全局优化,适合全局可比对的序列,准确性高。
- E-INS-i:适合含有大段不可比对区域的序列,通过广义仿射缺口成本算法优化。
- NW系列:
- NW-NS-i:不使用FFT近似,适合需要高准确性的场景。
- NW-NS-2:快速,不使用FFT近似。
- NW-NS-PartTree-1:适合大量序列(约10,000-50,000条),使用PartTree算法快速构建引导树。
参数设置
MAFFT提供了丰富的参数用于调整比对行为:
- 比对算法相关参数:
--localpair
:使用局部比对算法(Smith-Waterman)。--globalpair
:使用全局比对算法(Needleman-Wunsch)。--genafpair
:使用广义仿射缺口成本算法。--retree
:指定引导树构建的次数(默认为2)。--maxiterate
:指定迭代优化的次数(默认为0)。
- 缺口参数:
--op
:组间比对的缺口开启惩罚(默认为1.53)。--ep
:组间比对的缺口延伸惩罚(默认为0.123)。--lop
、--lep
、--lexp
:局部比对的缺口参数。
- 输出格式:
--clustalout
:输出为Clustal格式。--treeout
:输出引导树到文件。--quiet
:不显示比对进度。
- 输入格式:
--nuc
:假设输入为核苷酸序列。--amino
:假设输入为氨基酸序列。--seed
:使用已对齐的序列作为种子进行比对。
使用场景示例
以下是几种常见使用场景的示例:
-
快速比对大量序列:
mafft --retree 1 --maxiterate 0 input.fasta > output.fasta
-
高准确性比对少量序列:
mafft --localpair --maxiterate 1000 input.fasta > output.fasta
-
分组比对:
mafft-profile group1.fasta group2.fasta > output.fasta
-
输出Clustal格式:
mafft --clustalout input.fasta > output.clustal
-
使用PartTree算法:
mafft --retree 1 --maxiterate 0 --parttree input.fasta > output.fasta
注意事项
- 序列数量:根据序列数量选择合适的算法。大量序列适合快速方法,少量序列适合高准确性方法。
- 序列类型:通过
--nuc
或--amino
明确指定输入序列类型。 - 输出格式:默认为FASTA格式,如需其他格式可使用相应参数(如
--clustalout
)。