python - 字符串长度不等的多序列比对

标签 python bioinformatics biopython dna-sequence sequence-alignment

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

一个简化的例子:

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

应该产生 "AGGGGC" 的共识序列。

我在 BioPython 库中找到了进行多序列比对 (MSA) 的模块,但仅限于相同长度的序列。我也熟悉(并已实现)任意长度的两个序列的 Smith-Waterman 样式比对。我想一定有一个库或实现结合了这些元素(MSA over unequal lentghs),但在搜索网络和各种文档数小时后,没有找到任何东西。

关于现有模块/库(首选 Python)或程序的任何建议,我可以将其合并到执行此操作的管道中?

谢谢!

最佳答案

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

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

关于python - 字符串长度不等的多序列比对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152011/

相关文章:

python - 如何绘制多个图形并使用 [matplotlib] 中的导航按钮

python - 为什么 Collections.counter 这么慢?

r - 从 R 内部堆积床文件

python - 使用biopython从entrez获取基因序列

python - 如何使用 Biopython 获得多个序列比对的共识?

python - 与 open 一起使用时的下拉菜单

Python-如何测试用户输入是否是十进制数

python - 打印两个字符串中同一位置不同的特定字符

python-2.7 - 如何在biopython中计算密码子使用偏差(RSCU)

python - 如何测试/搜索字典中的值