我的RNA序列含有不同的修饰核苷酸和残基。其中一些例如N79, 8XU, SDG, I
。
我想使用biopython的pairwise2.align.localms
成对对齐它们。是否有可能不是作为字符串而是作为列表输入,以便准确地考虑这些修改后的基数?
正确的技术是什么?
答案 0 :(得分:4)
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函数不能很好地显示它。
答案 1 :(得分:1)
很抱歉添加了另一个答案,但我的声誉不足以仅添加评论......
详细说明peterjc的答案,接受列表作为输入是dstream.count().foreachRDD { rdd => val count = rdd.first() }
的预期行为(现在我明白它可能对......有什么好处。)。
你是对的,它也与pairwise2
参数有关:由于你将序列应用为列表,因此间隙字符也必须定义为列表(gap_char
)。