附加到对齐器的多序列比对

2024-10-01 19:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组520个流感序列,我已经做了多个序列比对,并计算了成对的身份矩阵。如果我想加入另一个序列,我必须重新排列所有的元素,并重新计算整个PWI矩阵。有没有什么程序我可以用来“附加”这个序列到对齐,并且只计算每隔一个序列的PWI w.r.t?

一个简单的例子如下。我有一个2x2校准,有以下分数。

     SeqA SeqB
SeqA 1.00 0.98
SeqB 0.98 1.00

不需要重新运行完全对齐,但只对所有其他序列运行“SeqC”,我想得到以下矩阵:

^{pr2}$

我使用的是BioPython包,Python是我的首选语言,但如果需要,我也可以使用Java。

[我在这里否认我是从BioStars交叉发布的,以防有专家不在BioStars上。BioStars的帖子是:http://www.biostars.org/p/77607/,但内容完全相同。]


Tags: 程序元素身份序列矩阵分数例子校准
1条回答
网友
1楼 · 发布于 2024-10-01 19:29:39

如果您的主要问题是重新运行对齐所需的时间(重新计算PWI矩阵在计算上应该很便宜),那么MUSCLE有能力做您想要的,一个通常称为"profile-profile alignment"的过程。在

Profile-profile对齐

当传递-profile标志时,对齐将“彼此重新对齐,保持输入列的完整性,并在需要的地方插入空白列。”:

If you have two existing alignments of related sequences you can use the –profile option of MUSCLE to align those two sequences. Typical usage is:

   muscle -profile -in1 one.afa -in2 two.afa -out both.afa

在生物圈中实施

Biopython有一个wrapper around MUSCLE,但我发现使用subprocess调用MUSCLE,然后将结果解析回一个^{}

# Do profile-profile alignment (one sequence to many aligned)
seq_fn = "influenza_seq.fasta"
aligned_fn = "520_influenza_seqs.afasta"
cmd = ['muscle', '-clwstrict', '-profile', '-in1', seq_fn, '-in2', aligned_fn]
aligner = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = aligner.communicate()

# Get resulting alignment (MultipleSeqAlignment)
alignment =  AlignIO.read(StringIO(stdout), "clustal",
                          alphabet=Alphabet.ProteinAlphabet())

相关问题 更多 >

    热门问题