Biopython 可以执行 Seq.find() 解释歧义代码吗
Can Biopython perform Seq.find() accounting for ambiguity codes
我希望能够在 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)
如果考虑歧义代码,答案应该是
>>> 2
但我得到的答案是没有找到匹配项,或者
>>> -1
查看 biopython 源代码,似乎没有考虑歧义代码,因为使用私有 _get_seq_str_and_check_alphabet 方法将子序列转换为字符串,然后使用内置字符串方法 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()
方法只会在 精确 子序列匹配时 return 匹配。
做你想做的事也许 ntsearch
功能会起作用:
Search for motifs with degenerate positions
我希望能够在 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)
如果考虑歧义代码,答案应该是
>>> 2
但我得到的答案是没有找到匹配项,或者
>>> -1
查看 biopython 源代码,似乎没有考虑歧义代码,因为使用私有 _get_seq_str_and_check_alphabet 方法将子序列转换为字符串,然后使用内置字符串方法 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()
方法只会在 精确 子序列匹配时 return 匹配。
做你想做的事也许 ntsearch
功能会起作用:
Search for motifs with degenerate positions