我希望能够搜索一个Seq对象,寻找一个子部分Seq对象来解释歧义代码。例如,以下情况应是正确的:
from Bio.Seq import Seq
from Bio.Alphabet.IUPAC import IUPACAmbiguousDNA
amb = IUPACAmbiguousDNA()
s1 = Seq("GGAAAAGG", amb)
s2 = Seq("ARAA", amb) # R = A or G
print s1.find(s2)
如果考虑到模糊代码,答案应该是
^{pr2}$但我得到的答案是没有找到匹配项,或者
>>> -1
看看biopython的源代码,似乎没有考虑歧义代码,因为subquence使用私有的_get_seq_str_check_alphabet方法转换为字符串,然后使用内置的string方法find()。当然,如果是这样,“R”歧义代码将被视为字面意思“R”,而不是a或G
我可以用一个自制的方法来实现这一点,但它似乎应该在使用Seq对象的biopython包中得到处理。我在这里遗漏了一些东西。在
有没有一种方法可以搜索子序列成员关系来解释模糊代码?在
从
Seq.find
的文档中可以看到:http://biopython.org/DIST/docs/api/Bio.Seq.Seq-class.html#find
这个方法的工作方式似乎与
str.find
方法相似,因为它寻找的是精确的匹配。因此,虽然dna序列可以包含歧义代码,但是Seq.find()
方法只会在精确的子序列匹配时返回匹配。在要执行您想要的操作,可能
ntsearch
函数可以工作:Search for motifs with degenerate positions
相关问题 更多 >
编程相关推荐