Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 串长不等的多序列比对_Python_Bioinformatics_Biopython_Dna Sequence_Sequence Alignment - Fatal编程技术网

Python 串长不等的多序列比对

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

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

一个简化的例子:

"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。