Python 串长不等的多序列比对
我需要一种方法,从3-1000个不同长度的短(10-20bp)核苷酸(“ATCG”)读数中创建一个一致序列 一个简化的例子:Python 串长不等的多序列比对,python,bioinformatics,biopython,dna-sequence,sequence-alignment,Python,Bioinformatics,Biopython,Dna Sequence,Sequence Alignment,我需要一种方法,从3-1000个不同长度的短(10-20bp)核苷酸(“ATCG”)读数中创建一个一致序列 一个简化的例子: "AGGGGC" "AGGGC" "AGGGGGC" "AGGAGC" "AGGGGG" 应产生一致的序列“agggc” 我在BioPython库中找到了进行多重序列比对(MSA)的模块,但只针对相同长度的序列。对于任意长度的两个序列,我也熟悉(并且已经实现)Smith-Waterman样式的对齐。我想一定有一个库或实现将这些元素结合在一起(MSA超过不相等的lentg
"AGGGGC"
"AGGGC"
"AGGGGGC"
"AGGAGC"
"AGGGGG"
应产生一致的序列“agggc”
我在BioPython库中找到了进行多重序列比对(MSA)的模块,但只针对相同长度的序列。对于任意长度的两个序列,我也熟悉(并且已经实现)Smith-Waterman样式的对齐。我想一定有一个库或实现将这些元素结合在一起(MSA超过不相等的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
肌肉在长度不等的序列中工作良好。不需要用gapsMAFFT填充它们,它比muscle快,但两者都可以使用OP的输入数据sizeThanks,MAFFT和muscle都可以满足我的需要。然而,它们都产生了意想不到的结果:1 AGGGC-4 AGGGC-3 aggggc-5 AGGGG-2 a-gggc-*。我认为gap成本太高了,所以它没有在1、4、5和2中创建“-”来对齐列中的“c”核苷酸。我看到在MAFFT中有各种各样的-op标志来改变这个权重,有什么建议是正确的,或者是修补的起始值吗?就肌肉而言,我看不到任何改变这个重量的选项?使用MAFFT设置进行调整。我似乎找不到任何地方可以将“A”s和“C”s对齐,并将“G”s的数量变化视为indel。