我有含有不同修饰核苷酸和残基的RNA序列。其中一些,例如N79, 8XU, SDG, I。
我想用生物工程的pairwise2.align.localms对它们进行配对。是否有可能使输入不是作为字符串,而是作为列表,例如,为了准确地解释这些修改的基数?
正确的技术是什么?
发布于 2016-03-22 11:38:39
Biopython的pairwise2模块工作在字母字符串上,这些字符串可以是任何东西,例如:
>>> from Bio import pairwise2
>>> from Bio.pairwise2 import format_alignment
>>> for a in pairwise2.align.localms("ACCGTN97CT", "ACCG8DXCT", 2, -1, -.5, -.1):
... print(format_alignment(*a))
...
ACCG--TN97CT
||||||||||||
ACCG8DX---CT
Score=9.7
ACCGTN97--CT
||||||||||||
ACCG---8DXCT
Score=9.7您可以根据需要设置匹配/不匹配分数。但是,这假设每个字母都是一个单独的元素。
在你的问题中不清楚的是你的例子N79是一个修饰核苷酸,还是三个?如果您想将N79作为一个基础来处理,这似乎是可能的:我不认为这是有意的(所以我不想依赖于这种行为),但是我可以欺骗pairwise2处理字符串列表:
>>> for a in pairwise2.align.localms(["A", "C", "C", "G", "T", "N97", "C", "T"], ["A", "C", "C", "G", "8DX", "C", "T"], 2, -1, -.5, -.1, gap_char=["-"]):
... print(format_alignment(*a)) ...
['A', 'C', 'C', 'G', 'T', 'N97', 'C', 'T']
||||||||
['A', 'C', 'C', 'G', '8DX', '-', 'C', 'T']
Score=10.5
['A', 'C', 'C', 'G', 'T', 'N97', 'C', 'T']
||||||||
['A', 'C', 'C', 'G', '-', '8DX', 'C', 'T']
Score=10.5注意,默认的format_alignment函数显示得不太好。
发布于 2016-03-22 15:33:17
很抱歉又加了一个答案,但是我的名声还不够好,不能仅仅加评论.
为了详细说明peterjc的答案,接受列表作为输入是pairwise2的预期行为(现在我理解了它可能对.有什么好处)。
您是对的,这也是关于gap_char参数的:由于您将序列作为列表应用,所以必须将gap字符定义为list (["-"])。
https://stackoverflow.com/questions/36142371
复制相似问题