我有一个模糊基础的共识序列,我想在其中搜索模式。起始位置应为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。
答案 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"
,即可获得匹配。