搜索具有模糊基础的共识序列

时间:2017-07-12 01:48:17

标签: biopython

我有一个模糊基础的共识序列,我想在其中搜索模式。起始位置应为3。

Seq="ATGARTTTTTT" -- R is A or G
Pattern="AGT"

我在SeqUtils中找到了一个名为nt_search的工具,它可以做到这一点,但它没有给我匹配的坐标,如场景#2所示。下面是一些测试来证明这个问题。

场景#1:没有不明确的基础

from Bio import SeqUtils
pattern="TAA"
Seq="ATGTAAAGGAGG"
m=SeqUtils.nt_search(Seq,pattern)
print m
['ACG', 3]

场景#2:序列中的模糊基础

pattern="AGT"
Seq="ATGARTTTTTT"
m=SeqUtils.nt_search(Seq,pattern)
print m
['AGT']

场景#3:模式中的模糊基础

pattern="ART"
Seq="ATGAGTTTTTT"
m=SeqUtils.nt_search(Seq,pattern)
print m
['A[AG]T', 3]

nt_search的源代码是here。我不知道如何调整它以获得起始位置,在本例中,将是3。

1 个答案:

答案 0 :(得分:1)

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { //int i; char *p1; p1 = (char *)malloc(0); printf("p1 = %p\n", p1); free(p1); return 0; } 的帮助文本可以更加清晰,但它返回一个列表,给出使用的正则表达式和任何匹配的位置。 e.g。

nt_search

因此,如果您希望第一个匹配仅作为整数,则需要从列表中提取第一个元素:

>>> from Bio.SeqUtils import nt_search
>>> print(nt_search("ATGAGTTTTTT", "ART"))
['A[AG]T', 3]
>>> print(nt_search("ATGAGTTTTTTAGT", "ART"))
['A[AG]T', 3, 11]
>>> print(nt_search("ATGAGTTTTTTAGTTTTAAT", "ART"))
['A[AG]T', 3, 11, 17]

元素零将是使用的正则表达式。

更新:(当前)不支持搜索模糊序列(问题中的场景2),部分我认为因为定义合理的实现很困难。例如使用任何三个字母的查询(例如>>> from Bio.SeqUtils import nt_search >>> print(nt_search("ATGAGTTTTTTAGT", "ART")[0]) A[AG]T >>> print(nt_search("ATGAGTTTTTTAGT", "ART")[1]) 3 "NNN""AAA")搜索"ART",即可获得匹配。