不等长度多序列比对

2024-09-29 21:40:33 发布

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

我需要一种方法来创建一个一致序列的3-1000个短(10-20bp)核苷酸(“ATCG”)读不同长度。在

一个简单的例子:

"AGGGGC"
"AGGGC"
"AGGGGGC"
"AGGAGC"
"AGGGGG"

应产生"AGGGGC"的一致序列。在

我在BioPython库中找到了多序列比对(MSA)的模块,但只针对相同长度的序列。我也熟悉(并且已经实现了)史密斯-沃特曼风格的两个序列的任何长度的对齐。我想一定有一个库或实现将这些元素组合在一起(不相等长度上的MSA),但是经过数小时的搜索web和各种文档,仍然没有找到任何东西。在

关于现有的模块/库(Python首选)或程序的建议,我可以将它们合并到一个管道中来实现这一点?在

谢谢!在


Tags: 模块方法元素风格序列msa例子biopython
1条回答
网友
1楼 · 发布于 2024-09-29 21:40:33

在序列末尾添加间隔字符,使它们都具有相同的长度。然后你可以用你选择的程序来处理它们,例如肌肉:

from Bio import SeqIO
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Align.Applications import MuscleCommandline

sequences = ["AGGGGC",
             "AGGGC",
             "AGGGGGC",
             "AGGAGC",
             "AGGGGG"]

longest_length = max(len(s) for s in sequences)
padded_sequences = [s.ljust(longest_length, '-') for s in sequences]
records = (SeqRecord(Seq(s)) for s in padded_sequences)

SeqIO.write(records, "msa_example.fasta", "fasta")

from Bio.Align.Applications import MuscleCommandline
cline = MuscleCommandline(input="msa_example.fasta", out="msa.txt")
print cline

相关问题 更多 >

    热门问题