我想通过使用MUSCLE算法进行多序列比对。
from Bio.Align.Applications import MuscleCommandline
muscle_exe = r"C:\Program file\muscle3.8.31_i86win32.exe"
in_file = r"non_aligned.fasta"
out_file = r"aligned.fasta"
muscle_cline = MuscleCommandline(muscle_exe, input=in_file, out=out_file)
print(muscle_cline)
stdout, stderr = muscle_cline()
但是,我想以不同的方式使用它,如下所示:
nsequences = len(sequences)
for i in range(nsequences):
for j in range(i+1, nsequences):
aln = alignment_function(sequences[i], sequences[j])
print (sequences[i], sequences[j], aln)
其中序列是文件 non_aligned.fasta 中包含的序列, nsequences 是序列的数量。 所以,我想通过 MUSCLE 对齐两个序列,每次都像我在上面的代码中提到的那样,每两个序列打印一次。 alignment_function(sequences [i],sequences [j])是一个函数,它通过 MUSCLE 对两个序列进行对齐。我怎样才能做到这一点 ?然后应该输出如下内容:
seq1 seq2 aln12
seq1 seq3 aln13
seq2 seq3 aln23
答案 0 :(得分:0)
首先尝试从命令行中进行一次对齐,如下所示:
import os
os.system("muscle -profile -in1 seq1.aln -in2 seq2.aln -out combinedAlignment.fasta -maxmb 15000")
其中,seq1.aln是你的第一个序列,seq2,aln是你的第二个序列,输出是combinedAlignment.fasta,maxmb是可选的,但总是更好用。