通过MUSCLE进行多序列比对

时间:2015-01-09 19:41:43

标签: python alignment biopython

我想通过使用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

1 个答案:

答案 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是可选的,但总是更好用。